EXCP TITLE ' IECVEXCP - EXCP PROCESSOR - PROLOGUE' 00100002 IECVEXCP CSECT 00120002 *********************************************************************** 00150021 * * 00250021 * MODULE NAME = IECVEXCP * 00260002 * * 00290002 * DESCRIPTIVE NAME = EXCP PROCESSOR DRIVER OF IOS * 00292002 * * 00298002 * COPYRIGHT = NONE * 00298402 * * 00299602 * STATUS = CHANGE LEVEL IS 0 * 00300002 * * 00450021 * FUNCTION -- * 00500021 * EXCP PROCESSOR PROVIDES COMPATABILITY BETWEEN OS/VS2 RELEASE * 00550021 * 1 AND OS/VS2 RELEASE 2. IT HANDLES THE EXCP AND EXCPVR * 00600021 * MACRO INSTRUCTIONS. IT ACCEPTS THE IOB, DCB, DEB AND ECB AND * 00650021 * MAPS THEM INTO AN SRB - IOSB INTERFACE WHICH IT THEN PASSES TO * 00700021 * THE IOS CHANNEL SCHEDULER. * 00750021 * IOS POST STATUS PASSES CONTROL BACK TO EXCP FOR APPENDAGE * 00850021 * COMPATABILITY AND WHEN PROCESSING IS COMPLETE FOR A REQUEST. * 00900021 * EXCP CONTAINS ALL RELATED REQUEST PROCESSING OF WHICH THERE * 01000021 * ARE THREE TYPES: * 01050021 * 1. THE SIO APPENDAGE IS NOT EXECUTED BEFORE THE CHANNEL END * 01100021 * APPENDAGE FOR THE PREVIOUS REQUEST. FOR THIS TYPE, THE BACK END * 01150021 * OF EXCP RE-ENTERS THE FRONT END BEFORE THE SIO APPENDAGE AND * 01200021 * CCW TRANSLATION. * 01250021 * 2. THE SIO IS NOT DONE BEFORE THE CHANNEL END APPENDAGE FOR THE * 01300021 * PREVIOUS REQUEST. THE BACK END OF EXCP ENTERS THE FRONT END AT * 01350021 * THE POINT OF SCHEDULING THE CHANNEL SCHEDULER. * 01400021 * 3. THE SIO IS NOT DONE BEFORE RECEIVING THE CHANNEL END * 01450021 * INTERRUPT FOR THE PREVIOUS REQUEST. REDRIVE IS DONE FROM THE * 01500021 * DISABLED INTERRUPT EXIT. * 01550021 * * 01600021 * NOTES = NONE * 01602002 * * 01604002 * DEPENDENCIES = NONE * 01606002 * * 01608002 * RESTRICTIONS = NONE * 01610002 * * 01612002 * REGISTER CONVENTIONS = SEE REGISTER EQUATES BELOW * 01614002 * * 01616002 * PATCH-LABEL = PATCH * 01618002 * * 01620002 * MODULE TYPE = CONTROL, SVC * 01622002 * * 01624002 * PROCESSOR = ASSEMBLER * 01626002 * * 01628002 * MODULE SIZE = HEX13CC BYTES @YM07015 01630002 * * 01632002 * ATTRIBUTES = * 01634002 * REENTRANT, RUNS ENABLED UNDER LOCAL LOCK. * 01636002 * * 01638002 * ENTRY POINT = * 01650002 * IGC000 - EXCP PROCESSING VIA SVC 0 * 01700021 * IGC092 - TSO RESTORE VIA SVC 92 * 01750021 * IGC114 - EXCPVR PROCESSING VIA SVC 114 * 01800021 * XCPEXT - EXTENT CHECK SUBROUTINE VIA BRANCH * 01850021 * XCPPUR - PURGE SUBROUTINE VIA BRANCH * 01900021 * XCPRES - RESTORE SUBROUTINE VIA BRANCH * 01950021 * XCPBKE - RETURN RQE ROUTINE VIA BRANCH * 02000021 * * 02050021 * PURPOSE = SEE FUNCTION * 02060002 * * 02070002 * LINKAGE = TYPE 1 SVC LINKAGE * 02080002 * BAL ENTRY FOR OTHER THAN SVCS * 02090002 * * 02100021 * INPUT = (FOR SCV ENTRY) * 02150002 * REGISTER 1 CONTAINS A POINTER TO AN IOB * 02200021 * REGISTER 4 CONTAINS A POINTER TO THE ASSOCIATED TCB * 02250021 * IF THE HIGH ORDER BYTE OF REGISTER 1 CONTAINS A F4, IT IS * 02300021 * AN EXCPVR REQUEST. FOR SVC 92, REGISTER 0 CONTAINS THE USER TCB. * 02350021 * * 02450021 * OUTPUT = * 02500002 * THE ECB IS POSTED WITH ONE OF THE FOLLOWING CODES DESCRIBING * 02550021 * COMPLETION OF THE I/O EVENT. * 02600021 * 7F - NORMAL COMPLETION * 02650021 * 41 - PERMANENT ERROR * 02700021 * 42 - EXTENT VIOLATION * 02750021 * 44 - INTERCEPT CONDITION * 02800021 * 48 - PURGED REQUEST * 02850021 * * 02950021 * EXIT-NORMAL = * 02953002 * * 02956002 * IN THE FRONT END, EXIT IS TO TYPE 1 EXIT. * 02959002 * IN THE BACK END, EXIT IS TO THE DISPATCHER. * 02962002 * * 02965002 * EXIT-ERROR = * 02968002 * * 02971002 * SAME AS ABOVE EXCEPT THE REQUESTOR IS ABENDED WITH ONE OF * 02974002 * THE FOLLOWING CODES. * 02977002 * * 02977702 * 15C - AN SVC 92 WAS ISSUED AND REQUEST WAS NOT IN @YM07015 02978402 * THE SUPERVISOR STATE. @YM07015 02978702 * 172 - AN SVC 114 WAS ISSUED WITH ONE OF THE @YM07015 02979102 * FOLLOWING CONDITIONS: @YM07015 02979402 * - PROTECT KEY WAS NOT ZERO @YM07015 02980002 * - REQUEST NOT ISSUED IN SUPERVISOR STATE @YM07015 02983002 * - AUTHORIZATION BIT NOT SET IN JSCB @YM07015 02986002 * 200 - PROTECT KEY OF A CONTROL BLOCK IS NOT ADMISSABLE. * 02987002 * (EITHER IOB,DCB OR ECB STORAGE PROTECT KEY NOT @YM07015 02989002 * SAME AS PROTECT KEY IN REQUEST BLOCK OF CALLER)@YM07015 02990002 * 300 - PROTECT KEY OF DEB NOT ZERO OR DEB VALIDITY @YM07015 02991002 * CHECK ROUTINE(IFGDEBCK) RETURNED TO EXCP A @YM07015 02992002 * NON-ZERO RETURN CODE. @YM07015 02993002 * 400 - DCB POINTERS IN THE IOB AND DEB DO NOT MATCH. * 02994002 * 500 - DEB DOES NOT POINT TO A VALID UCB. * 02995002 * 700 - A PROGRAM CHECK OCCURRED WHILE IN A @YM07015 02996002 * SUPERVISOR SERVICE ROUTINE CALLED BY EXCP. @YM07015 02997002 * 800 - AN ERROR OCCURRED WHEN EXCP ATTEMPTED TO FIX @YM07015 02998002 * A PAGE FOR THIS EXCP REQUEST. @YM07015 03000002 * A00 - A PROGRAM CHECK OCCURRED IN A USER APPENDAGE. @YM07015 03002002 * B00 - INDETERMINATE ERROR WHILE IN EXCP PROCESSING. @YM07015 03004002 * E00 - A PROGRAM CHECK IN IOS AND NO EXCP DEBUG AREA @ZA05361 03004603 * AVAILABLE AT THIS TIME. @ZA05361 03005203 * * 03006002 * EXTERNAL REFERENCES = * 03010002 * 03014002 * ROUTINES = 03020002 * IECVTCCW - CCW TRANSLATOR * 03050002 * - PAGE FIX INTERFACE * 03100021 * - SMF ROUTINE * 03150021 * - POST ROUTINE * 03200021 * IECVSMGR - CORE MANAGEMENT * 03250002 * * 03300021 * DATA-AREAS = SEE TABLES BELOW * 03310002 * * 03320002 * CONTROL-BLOCKS = SEE TABLES BELOW * 03330002 * * 03350021 * TABLES = * 04350002 * IOB - INPUT OUTPUT BLOCK - DESCRIBES THE SPECIFIC I/O * 04400021 * REQUEST. * 04450021 * ECB - EVENT CONTROL BLOCK - POSTED UPON COMPLETION OF * 04500021 * A REQUEST. * 04550021 * DCB - DATA CONTROL BLOCK - DESCRIBES THE DATA SET THAT * 04600021 * IS REFERENCED IN THE REQUEST. * 04650021 * DEB - DATA EXTENT BLOCK - DESCRIBES THE LOCATION OF A * 04700021 * DATA SET. * 04750021 * UCB - UNIT CONTROL BLOCK - DESCRIBES THE HARDWARE INTERFACE.* 04800021 * TCB - TASK CONTROL BLOCK - DESCRIBES THE REQUESTOR. * 04850021 * JSCB - JOB SCHEDULER CONTROL BLOCK - AUTHORIZATION BLOCK. * 04900021 * IOSB - IOS BLOCK - DESCRIBES THE SPECIFIC REQUEST TO THE * 04950021 * CHANNEL SCHEDULER. * 05000021 * SRB - SERVICE REQUEST BLOCK - DESCRIBES AN EVENT. * 05050021 * IPIB - IOS PURGE INTERFACE BLOCK - DESCRIBES A PURGE * 05100021 * REQUEST TO ALL PROCESSORS. * 05150021 * PIRL - PURGE I/O RESTORE LIST - RESTORE CHAINS FOR * 05200021 * I/O PROCESSORS. * 05250021 * ASCB - ADDRESS SPACE CONTROL BLOCK - DESCRIBES THE * 05300021 * ADDRESS SPACE WHICH IS OPERATING. * 05350021 * CVT - COMMUNICATION VECTOR TABLE - INTERFACES BETWEEN * 05400021 * SYSTEM FUNCTIONS. * 05450021 * TCCW - TRANSLATION CONTROL BLOCK - INTERFACE BLOCK TO * 05500021 * CCW TRANSLATOR. * 05550021 * * 05600021 * MACROS = SETFRR,GETMAIN,FREEMAIN,STARTIO,CALLRTM,SETLOCK,ABEND, * 05620002 * MODESET,WIEXCP * 05650002 * * 05850021 * CHANGE ACTIVITY = * 06100002 * NEW MODULE FOR VS2/2 * 06110002 * * 06200021 *********************************************************************** 06250021 PRINT OFF 06270002 */*IECVEXCP: CHART */ 06272002 */* HEADER 06274002 */* EXCP PROCESSOR 06276002 */* PAGE # */ 06276402 */*IGC092: E TSO RESTORE ENTRY */ 06278002 */* D (NO,IGC092B,YES,) SVC ISSUED BY RESTORE */ 06278402 */*IGC092A: P REPLACE TCB IN R4 WITH TCB IN R0 */ 06278802 */* D (NO,IGC114,YES,IGC000) IOB ADDRESS POSITIVE */ 06279202 */*IGC092B: P (,ABEND000) SET INVALID SVC 92 INDICATOR */ 06279602 */*IGC114: E EXCPVR ENTRY */ 06279702 */* S SETFRR: ESTABLISH FRR 12=SAVE AREA */ 06279802 */* P INDICATE FRONT END ENTRANCE */ 06279902 */* P LOAD APPENDAGE VECTOR TABLE ADDRESS */ 06286602 */* D (YES,IGC114B,NO,) AUTH BIT ON IN AVT */ 06288602 */* D (YES,IGC114B,NO,) PROTECT KEY ZERO */ 06290602 */* D (YES,IGC114B,NO,) SUPERVISOR STATE REQUEST */ 06292602 */* D (NO,IGC114C,YES,) JSCB AUTH BIT ON */ 06293002 */*IGC114B: P (,XCP000) INDICATE SVC114 ENTRY */ 06293102 */*IGC114C: P (,ABEND000) SET INVALID SVC 114 INDICATOR */ 06293202 */*IGC000: E EXCP ENTRY */ 06307402 */*IGC000A: D (NO,IGC000C,YES,) TCB INDICATE V=R */ 06317402 */* P FIND PQE REGION START + REGION SIZE */ 06319402 */* D (NO,IGC000C,YES,) FIRST CCW FALL WITHIN REGION */ 06321402 */*IGC000B: P (,IGC000D) INDICATE V=R REQUEST */ 06321502 */*IGC000C: P INDICATE VIRTUAL REQUEST */ 06326202 */*IGC000D: S SETFRR: ESTABLISH FRR 12=SAVE AREA */ 06328202 */* P INDICATE FRONT END ENTRANCE */ 06330202 */*XCP000: P ESTABLISH MODULE BASE */ 06330602 */* P ESTABLISH IOB REGISTER */ 06331002 */* P SAVE RETURN ADDR IN FRR AREA */ 06335702 */* P LOAD POINTER TO DCB FROM IOB */ 06337702 */* P LOAD POINTER TO DEB FROM DCB */ 06339702 */* D (YES,XCP010,NO,) IOBDCB = DEBDCB */ 06340102 */* P (,ABEND000) INDICATE INVALID DCB */ 06340502 */*XCP010: D (NO,XCP020,YES,) PROTECT KEY GT 7 */ 06352402 */* L (GOOD,XCP015,BAD,) IFGDEBCK: DEB VALIDITY CHECK */ 06362402 */*XCP013: P (,ABEND000) INDICATE INVALID DEB */ 06362802 */*XCP015: S XCPVALA: CHECK CONTROL BLOCK KEYS */ 06363202 */*XCP020: D (YES,XCP025,NO,) ANY EXTENTS IN DEB */ 06363602 */* P LOAD POINTER TO UCB FROM FIRST EXTENT */ 06364002 */* D (NO,XCP030,YES,) DISK, TP OR GRAPHICS */ 06364102 */*XCP025: D (YES,XCP013,NO,) IOBM GT MAX M FROM DEB */ 06364202 */* P LOAD UCB POINTER FROM PROPER EXTENT */ 06368202 */*XCP030: D (YES,XCP035,NO,) IS UCB POINTER VALID */ 06370202 */*XCP032: P (,ABEND000) INDICATE INVALID UCB */ 06370602 */*XCP035: P CLEAR CHANGEABLE IOB FIELDS AND ECB */ 06371002 */*XCPRQE: P SET UP TO GET AND RQE */ 06371402 */* L IECVSMGR: GET A 40 BYTE BLOCK */ 06371802 */* P INIT RQE WITH UCB,IOB DEB,TCB AND TYPE OF REQUEST */ 06371902 */* L IEASMFEX: RECORD THE REQUEST */ 06372002 */*XCPVAM: D (NO,XCP038,YES,) VAM REQUEST */ 06372102 */* P LOAD POINTER TO SMF ROUTINE */ 06376102 */* P MARK RQE AS A VAM REQUEST */ 06378102 */* L (+0,XCPVAMA,+4,XCPVAMB,+8,XCPVAMD) VAM WINDOW INTERCEPT */ 06378502 */*XCPVAMA: S XCPENVL: LOAD ENVIRONMENTAL REGISTERS */ 06378902 */* S (,XCPVAMC) XCPPOST: POST ECB COMPLETE */ 06379302 */*XCPVAMB: S XCPENVL: LOAD ENVIRONMENTAL REGISTERS */ 06379702 */*XCPVAMC: P RESTORE FRR WORK AREA ADDRESS */ 06379802 */* S (,XCPEXIT) XCPFREE: FREE RQE */ 06379902 */*XCPVAMD: P (,XCPEXIT) RESTORE FRR WORK AREA ADDRESS */ 06380002 */*XCP038: D (NO,XCP050,YES,) IS THE REQUEST RELATED */ 06384002 */* P STORE RELATED REQUEST TYPE IN RQE */ 06386002 */* P LOAD POINTER TO RELATED REQUEST QUEUE */ 06386402 */* D (YES,XCP040,NO,) IS THERE A QUEUE */ 06386802 */* D (NO,XCP039,YES,) IS THIS A 3525 ASSOCIATED DATA SET */ 06387202 */* S (YES,XCP040,NO,) XCP038A: CHECK FOR RRQ ON READ DEB */ 06387602 */* S (YES,XCP040,NO,) XCP038A: CHECK FOR RRQ ON PUNCH DEB */ 06387702 */* S (YES,XCP040,NO,XCP039) XCP038A: CHECK FOR RRQ ON PRINT DEB */ 06387802 */*XCP038A: E CHECK FOR 3525 RRQ */ 06387902 */* D (YES,%RTN,NO,) IS THIS THE PRESENT DEB */ 06388002 */* D (ZERO,%RTN,GT0,) DCB ADDRESS ZERO */ 06398302 */* D (NO,%RTN,YES,) DCB OPEN */ 06408302 */* D (NO,%RTN,YES,) RRQ POINTER IN DEB FOR THIS DCB */ 06408702 */* P (,XCP040) STORE RRQ POINTER IN PRESENT DEB */ 06412102 */*%RTN: R RETURN TO CALLER */ 06414102 */*XCP039: L GETMAIN: GET AN 8 BYTE BLOCK FOR RRQ */ 06414502 */* P STORE THE NEW RRQ ADDRESS IN DEB */ 06414902 */*XCP039A: P (,XCP045) STORE RQE ADDRESS IN RRQ AS FIRST */ 06415302 */*XCP040: P LOAD POINTER TO LAST IN QUEUE */ 06415402 */* D (YES,XCP039A,NO,) IS QUEUE EMPTY */ 06415502 */* P STORE RQE ADDR IN CHAIN OF LAST RQE */ 06415602 */*XCP045: P STORE RQE ADDR AS LAST IN QUEUE */ 06419002 */* P STORE END OF CHAIN INDICATOR IN RQE */ 06421002 */* D (YES,XCP046A,NO,) PERMANENT ERROR IN PREV REQUEST */ 06421402 */* D (YES,XCP050,NO,) THIS RQE AT THE TOP OF THE QUEUE */ 06421802 */* D (NO,XCP048,YES,) IS THIS A TYPE 2 OR 3 REL REQ */ 06422202 */* P ZERO A COUNT REGISTER */ 06422302 */* P LOAD POINTER TO FIRST RQE ON QUEUE */ 06422402 */*XCP046: D (YES,XCP047,NO,) THIS THE PRESENT RQE */ 06422502 */* D (NO,XCPEXIT,YES,) IS THIS A TYPE 2 OR 3 */ 06425902 */* P INCREMENT COUNT BY ONE */ 06427902 */* P (,XCP046) POINT TO NEXT RQE ON CHAIN */ 06428302 */*XCP046A: S (,XCPPUR) XCP205: EXECUTE ABNORMAL END APPENDAGE */ 06428402 */*XCP047: D (GT4,XCPEXIT,LT4,XCP050,=4,) NO RQES ABOVE THIS ONE */ 06428702 */*XCP048: D (YES,XCP050,NO,) CHE APP COMPLETE IN PREV REQ */ 06432802 */*XCPEXIT: D (NO,XCPEXITA,YES,) TERM RTN ENTRANCE */ 06437402 */* P STORE ADDR OF RQE AS PREVIOUS */ 06439402 */* D (NO,XCPEXITA,YES,) IS THERE AN RRQ */ 06439502 */* D (YES,XCPEXITA,NO,) PERM ERROR IN LAST REQUEST */ 06439602 */* D (YES,XCPEXITB,NO,) IS THER A COUNT OF TRANSL RQES */ 06448202 */* P LOAD FIRST RQE POINTER FROM RRQ */ 06450202 */*XCPEXITD: D (YES,XCPEXITA,NO,) END OF RQE CHAIN */ 06452202 */* D (NO,XCPEXITA,YES,) TYPE 2 OR 3 RELATED REQUEST */ 06454202 */* D (NO,XCPEXITC,YES,) RQE STARTABLE */ 06456202 */* P ADD ONE TO COUNT OF TRANSLATED RQES */ 06456602 */* P (,XCPEXITD) POINT AT NEXT RQE IN CHAIN */ 06456702 */*XCPEXITC: D (YES,XCPEXITE,NO,XCPEXITA) COUNT LT FOUR */ 06456802 */*XCPEXITB: D (NO,XCPEXITA,YES,) COUNT LESS THAN FOUR */ 06456902 */* D (NO,XCPEXITA,YES,) RQE A TYPE 2 OR 3 */ 06468502 */* D (NO,XCPEXITA,YES,) IS IT STARTABLE */ 06478502 */* P LOAD POINTER TO NEXT RQE */ 06478902 */* D (YES,XCPEXITA,NO,) END OF CHAIN */ 06479302 */*XCPEXITE: P (,XCP050) STORE RQE ADDRESS AS CURRENT */ 06479702 */*XCPEXITA: D (NO,XCPEXITF,YES,) ANY STORAGE TO FREE */ 06480102 */* L IECVSMGR: FREE 160 BYTE BLOCKS */ 06480202 */*XCPEXITF: D (NO,XCPEXITG,YES,) TERM RTN ENTRANCE */ 06480302 */*XCPEXITH: P FREE LOCAL LOCK */ 06481102 */*XCPEXITG: D (YES,%PRTN,NO,) COME FROM PURGE */ 06481502 */* P DELETE FRR FROM STACK */ 06481602 */*%PRTN: R RETURN TO TYPE 1 EXIT OR DISPATCHER */ 06481902 */*XCP050: D (YES,XCP105,NO,) RE-EXCP REQUEST */ 06482302 */* P SET NO OF 160 BYTE BLOCKS TO TWO */ 06482702 */* D (NO,XCP055,YES,) VIRTUAL REQUEST */ 06487002 */* P SET NO OF 160 BYTE BLOCKS TO FOUR */ 06489002 */*XCP055: D (NO,XCP060,YES,) ALREADY HAVE ENOUGH */ 06491002 */* P DECREMENT NO AVAIL BY NO NEEDED */ 06493002 */* P CHAIN BLOCKS NEEDED TOGETHER */ 06495002 */* P (,XCP065) STORE NEW AVAIL POINTER */ 06495402 */*XCP060: P PREPARE REGS TO GET REQUIRED BLOCKS */ 06495502 */* L IECVSMGR: GET 160 BYTE BLOCKS */ 06495602 */*XCP065: P STORE FIRST BLOCK AS SRB IN RQE */ 06499502 */* P LOAD IOSB REGISTER AS OFFSET FROM SRB */ 06501502 */* P LOAD POINTER TO NEXT BLOCK */ 06501902 */* P ZERO ENTIRE SRB BLOCK */ 06502302 */* P STORE TCB ADDRESS IN SRB */ 06502702 */* P STORE IOSB ADDRESS IN SRB */ 06503102 */* P STORE NEXT BLOCK ADDRESS AS TCCW IN RQE */ 06503202 */* D (NO,XCP070,YES,) VIRTUAL REQUEST */ 06503302 */* P STORE NEXT TWO BLOCKS AS BEB AND FIX IN TCCW */ 06503402 */*XCP070: P SET DRIVER ID TO EXCP */ 06503502 */* P STORE ASID IN IOSB */ 06509302 */* P STORE TERMINATION RTN ADDRESS IN PGAD */ 06511302 */* P STORE UCB ADDRESS AND PROTECT KEY FOR CHAN PGM */ 06511402 */* P STORE ADDR OF CHANNEL END APPENDAGE */ 06511502 */* P STORE ADDR OF ABNORMAL END APPENDAGE */ 06512702 */* P STORE DEB ADDRESS AS DSID */ 06514702 */* P SET FLAGS COMMON TO IOBFLAG1 AND IOSFLA */ 06515102 */* D (NO,XCP071,YES,) BYPASS IBM ERPS */ 06518402 */* P SET FLAG WHICH SAYS USE NO ERPS */ 06520402 */* XCP071: D (NO,XCP075,YES,) IS THIS A TYPE 3 REL REQ */ 06520802 */*XCP072: P (,XCP080) GET ADDRESS OF DIE ROUTINE */ 06521202 */*XCP075: D (YES,XCP080,NO,) VIRTUAL REQUEST */ 06521602 */* D (NO,XCP072,YES,) PCI APPENDAGE A NOP */ 06521702 */*XCP080: P STORE DIE ADDR OR ZEROS IN IOSB DIE RTN ADDR */ 06521802 */* P ZERO A REGISTER FOR STORE */ 06522202 */* D (NO,XCP085,YES,) VIRTUAL REQUEST */ 06522602 */* D (YES,XCP085,NO,) PCI APPENDAGE A NOP */ 06522702 */* P LOAD ZEROED REG WITH ADDR OF PCI COMP CODE */ 06522802 */*XCP085: P STORE ADDR OF PCI APPENDAGE OR ZEROS IN IOSB */ 06522902 */*XCPPFA: D (NO,XCP105,YES,) A PAGE FIX APPENDAGE */ 06523802 */* D (YES,XCP105,NO,) A V=R REQUEST */ 06525802 */* P LOAD PAGE FIX APPENDAGE ADDRESS */ 06528802 */* P LOAD SAVE AREA POINTER AND LIST POINTER */ 06530802 */* L EXECUTE PAGE FIX APPENDAGE */ 06531202 */* D (NO,XCP105,YES,) EXCPVR REQUEST */ 06531602 */* D (NO,XCP105,YES,) AND FIX ENTRIES */ 06531702 */* P SET END OF ENTRIES INDICATOR */ 06531802 */*XCP090: P GET ADDRESS OF FIRST PAGE IN ENTRY */ 06531902 */*XCP095: P ACCESS THE PAGE WITH NI */ 06532702 */* P INCREMENT TO NEXT PAGE IN LIST */ 06533102 */* D (NO,XCP095,YES,) END OF ENTRY */ 06533502 */* D (YES,XCP100,NO,) END OF LIST */ 06533902 */* P (,XCP090) INCREMENT TO NEXT ENTRY */ 06534002 */*XCP100: P SET FLAGS FOR SHORT TERM FIX */ 06534102 */* D (YES,XCP103,NO,) ENTERED FIX ONCE */ 06534202 */* P SET FIX STARTED FLAG IN RQE */ 06534402 */* L IEAVPSIB: FIX PAGES IN LIST */ 06534802 */* D (0,XCP103,4,,8,%HERE) RETURN CODE FROM FIX */ 06534902 */* P (,ABEND000) SET CANNOT FIX PAGES CODE */ 06535602 */*%HERE: P (,XCP090) ZERO DEB ADDRESS AND SET PARM REG */ 06536002 */*XCP103: P RESTORE RQE AND DEB ADDRESSES */ 06536402 */*XCP105: D (NO,XCP110,YES,) DIRECT ACCES DEVICE */ 06536802 */* P MOVE SEEK ADDRESS FROM IOB TO IOSB SEEK AND SEEKA */ 06536902 */* S XCPEXT: CHECK THE ADDRESS FOR WITHIN EXTENTS */ 06537102 */* D (BAD,,GOOD,XCP110) EXTENT WITHIN BOUNDS */ 06537502 */* D (YES,XCP505,NO,) IGNORE RETURN */ 06537902 */* S (,XCP510) XCP205: EXECUTE ABNORMAL END APPENDAGE */ 06539502 */*XCP110: P LOAD POINTER TO SAVE AREA */ 06544602 */* P POINT TO SEEK FIELD */ 06546602 */* P SET INDICATOR THAT SIO APPENDAGE HAS CONTROL */ 06548602 */* L (+0,XCP115,+4,XCP113,+8,XCP115) EXECUTE THE SIO APPENDAGE */ 06550602 */*XCP113: P (,XCP515) LOAD TERMINATION BASE POINTER */ 06551002 */*XCP115: P RESET SIO APPENDAGE IN CONTROL BIT */ 06551402 */* P MOVE FILE MASK FROM DEB TO IOSB */ 06555402 */* P SET FIXING HAS STARTED FLAG IN RQE */ 06559402 */* D (NO,XCP145,YES,) VIRTUAL REQUEST */ 06563402 */* P INIT TCCW WITH TCB AND UCB */ 06567402 */* P GET IOBSTART AND STORE AS FIRST CCW TO XLAT */ 06571402 */* P SET INITIAL TRANSLATE OPTION */ 06571502 */*XCP120: L (+0,XCP140,+4+8,XCP135,+12,) IECVTCCW: TRANSLATE CCWS */ 06571802 */*XCP130: L IECVSMGR: GET A 160 BYTE BLOCK */ 06572202 */* P (,XCP120) PLACE BLOCK IN PARM REGISTER */ 06572302 */*XCP135: P (,ABEND000) GET THE PROPER ERROR CODE */ 06574602 */*XCP140: P STORE REAL ADDRESS IN IOSB */ 06576602 */* P (,XCP150) MOVE VIRTUAL ADDR OF REAL STRING TO IOSB */ 06578602 */*XCP145: P LOAD POINTER TO IOB START */ 06579002 */* P STORE AS VIRTUAL START IN IOSB */ 06579102 */* D (YES,XCP148,NO,) VIRTUAL = REAL REQUEST */ 06579202 */* P LOAD REAL ADDRESS OF IOBSTART */ 06580902 */*XCP148: P STORE REAL ADDRESS IN IOSB */ 06582902 */*XCP150: P MARK RQE AS STARTABLE */ 06583302 */* D (NO,XCP155,YES,) IS THE REQUEST RELATED */ 06583702 */* D (YES,XCP155,NO,) THIS RQE AT TOP OF QUEUE */ 06584102 */* D (NO,XCPEXIT,YES,) CHE APP COMPL ON PREV REQ */ 06584202 */*XCP155: P SET SRB SCHEDULED BIT IN RQE */ 06584302 */* L (,XCPEXIT) IECVSTIO: ISSUE STARTIO MACRO */ 06584402 */*XCPDIE: E EXCP DISABLED INTERRUPT EXIT */ 06586102 */* D (YES,,NO,%DIE2) SECOND ENTRY TO DIE */ 06588102 */* R RETURN TO IOS */ 06588502 */*%DIE2: P SAVE REGISTERS, ESTABL ADDRESSABILITY */ 06588902 */* P LOAD IOSB AND RQE REGISTERS */ 06589302 */* D (NO,XCPDIEB,YES,) VIRTUAL REQUEST */ 06589402 */*XCPDIEA: P SET RETURN CODE TO ZERO */ 06589502 */* D (NO,XCPDIEE,YES,) TYPE 3 RELATED REQUEST */ 06589602 */* D (NO,XCPDIEE,YES,) CHANNEL END IN INTERRUPT */ 06590102 */* D (YES,XCPDIEE,NO,) UNDERGOING RECOVERY */ 06590502 */* D (YES,XCPDIEE,NO,) STATUS OTHER THAN NORMAL */ 06590902 */* D (NO,XCPDIEE,YES,) ANOTHER RQE IN CHAIN */ 06591002 */* D (NO,XCPDIEE,YES,) CAN THIS RQE BE STARTED NOW */ 06591102 */* P SET BIT IN RQE SAYING SCHEDULED */ 06592802 */* P SET RETURN CODE FOUR */ 06594802 */* P (,XCPDIEF) LOAD POINTER TO SRB */ 06595202 */*XCPDIEB: D (NO,XCPDIEA,YES,) PCI IN INTERRUPT */ 06595602 */* D (YES,XCPDIEI,NO,) BEEN HERE FOR THIS INTERRUPT */ 06596002 */* S XCPENVL: LOAD ENVIRONMENTAL REGISTERS */ 06596402 */* D (YES,XCPDIEG,NO,) PROTECT KEY LT 8 */ 06596502 */* S XCPVAL: VALIDITY CHECK CONTROL BLOCKS */ 06605902 */*XCPDIEG: P INDICATE DIE EXIT TO MAP RTN */ 06607902 */* S XCPMAP: MAP IOSB INTO IOB */ 06609902 */* P LOAD SAVE AREA ADDRESS */ 06611902 */* L EXECUTE PCI APPENDAGE */ 06613902 */* P STORE NEW START ADDRESS FROM IOB TO IOSB */ 06614302 */* D (YES,XCPDIEH,NO,) ANY STATUS OTHER THAN PCI */ 06614702 */* P SET IGNORE EXIT INCREMENT */ 06615102 */*XCPDIEE: P RESTORE REGISTER 1 */ 06615202 */*XCPDIEF: P RESTORE REST OF REGISTERS */ 06615302 */* R RETURN TO IOS */ 06617002 */*XCPDIEH: D (NO,XCPDIEI,YES,) CHANNEL END IN STATUS */ 06619002 */* D (NO,XCPDIEA,YES,) DEVICE END IN STATUS */ 06619402 */* P (,XCPDIEA) SET SECOND ENTRY FLAG TO PCI */ 06619802 */*XCPDIEI: P (,XCPDIEA) RESET SECOND ENTRY TO PCI FLAG */ 06620202 */*XCPPCI: E PCI APPENDAGE COMP CODE */ 06620302 */* P SAVE REGS, ESTABLISH ADDRESSABILITY */ 06620402 */* S SETFRR: ESTABLISH FRR 12=SAVE AREA */ 06620502 */* P SET PCI APPENDAGE IN CONTROL */ 06622902 */* S XCPENVL: LOAD ENVIRONMENTAL REGS */ 06624902 */* D (YES,XCPPCIA,NO,) PROTECT KEY LT 8 */ 06626902 */* S XCPVAL: VALIDITY CHECK CONTROL BLOCKS */ 06627302 */*XCPPCIA: S XCPMAP: MAP IOSB TO IOB */ 06627702 */* P LOAD SAVE AREA POINTER */ 06627802 */* L EXECUTE PCI APPENDAGE */ 06627902 */* P LOAD TCB ADDRESS */ 06630302 */* L IEASMFEX: RECORD THE PCI */ 06632302 */* P DELETE THE FRR FROM THE STACK */ 06634302 */* P RESTORE REGISTERS */ 06634702 */* R RETURN TO POST STATUS */ 06635102 */*XCPABE: E ABE APP ENTRY */ 06635202 */* P LOAD INDICATOR FOR ABNORMAL END APPENDAGE ENTRY */ 06635302 */* P (,XCP200) LOAD ABNORMAL APPENDAGE ADDRESS */ 06637702 */*XCPCHE: E CHE APP ENTRY */ 06639702 */* P LOAD INDICATOR FOR CHANNEL END APPENDAGE ENTRY */ 06641702 */* P LOAD CHANNEL END APPENDAGE ADDRESS */ 06642102 */*XCP200: P ESTABLISH BASE FOR APPENDAGE PROCESS */ 06642502 */* S XCPFRR:SET FRR IN STACK 12=SAVE AREA */ 06642602 */* P SET WHICH APPENDAGE WAS ENTERED IN FRR AREA */ 06642702 */* P SET UP IOSB REG AND RQE REG */ 06643002 */* S XCPENVL: LOAD ENVIRONMENTAL REGS */ 06643402 */* D (YES,XCP202,NO,) SYSTEM RQE */ 06643502 */* S XCPVAL: VALIDITY CHECK CONTROL BLOCKS */ 06652302 */*XCP202: S XCPMAP: MAP IOSB TO IOB */ 06654302 */*XCP203: D (YES,XCPPUR,NO,) PERM ERROR ON REL REQUEST */ 06654402 */*XCP203A: P SAVE CHAIN PTR FROM RQE */ 06654702 */* L (+0,XCP220,+4,XCP210,+8,XCP215,+12,XCP205) EXECUTE APPENDAGE */ 06656302 */*XCP205: P SET DONT FREE RQE FLAG */ 06658302 */* P DEQUEUE RQE USING SAVED CHAIN POINTER */ 06658702 */*XCP210: P SET DONT POST RQE FLAG */ 06660302 */* P (,XCP250) RESTORE FRR POINTER */ 06660702 */*XCP215: P SET RE-EXCP FLAG IN RQE */ 06661102 */* L (,XCP250) IEASMFEX: RECORD THE RETRY REQUEST */ 06661502 */*XCP220: P MOVE COMPAT FLAGS FROM IOB TO IOSB */ 06661902 */* P MOVE SEEK FIELD TO IOSB FROM IOB */ 06662002 */* D (NO,XCP255,YES,) IS EXCEPTION FLAG ON */ 06662102 */* D (NO,XCP222,YES,) ECB COMPL CODE SHOW PERM ERROR */ 06662202 */* P SET PERM ERROR FLAG IN DCB */ 06662302 */* D (NO,XCP255,YES,) 3525 WITH ASSOCIATED DS */ 06664602 */* P LOAD POINTER TO READ DCB */ 06666602 */* D (YES,XCP221A,NO,) IS IT ZERO */ 06668602 */* P SET PERMANENT ERROR IN THIS DCB */ 06669002 */*XCP221A: P LOAD POINTER TO PUNCH DCB */ 06669402 */* D (YES,XCP221B,NO,) IS IT ZERO */ 06669802 */* P SET PERMANENT ERROR IN PUNCH DCB */ 06670202 */*XCP221B: P LOAD POINTER TO PRINT DCB */ 06670602 */* D (YES,XCP222,NO,) IS IT ZERO */ 06670702 */* P SET PERMANENT ERROR IN PRINT DCB */ 06672802 */*XCP222: P MOVE STATUS BACK TO IOSB FROM IOB */ 06674802 */* P GET START OF CHANNEL PROGRAM FROM IOB */ 06676802 */* D (YES,XCP225,NO,) VIRTUAL REQUEST */ 06676902 */* P STORE VIRTUAL START AND REAL START AFTER LRA */ 06677502 */* P (,XCP255) MOVE CSW ADDRESS TO IOSB */ 06677902 */*XCP225: P LOAD POINTER TO TRANSLATION CONTROL BLOCK */ 06678302 */* P SET SINGLE ADDRESS TRANSLATION FUNCTION */ 06678702 */* P LOAD POINTER TO IOBSTART AS PARAMETER */ 06678802 */* L IECVTCCW: TRANSLATE START ADDRESS TO REAL */ 06678902 */* P STORE AS VIRTUAL START AND REAL START AFTER LRA */ 06679002 */*XCP230: P LOAD POINTER TO CSW ADDRESS */ 06680902 */* P SET SINGLE ADDRESS TRANSLATION */ 06682902 */* L IECVTCCW: TRANSLATE CSW TO REAL */ 06683302 */* P STORE TRANSLATED CSW INTO IOSB CSW FIELD */ 06683702 */* P (,XCP255) RESTORE RQE POINTER */ 06684102 */*XCP250: P RESET EXCEPTION FLAGS IN IOB AND IOSB */ 06684502 */*XCP255: P DELETE FRR FROM STACK */ 06684602 */* R RETURN TO POST STATUS */ 06684702 */*XCPPUR: P SET REL REQ PURGE INDICATOR */ 06685602 */* P SAVE APPENDAGE ADDRESS */ 06687602 */*XCP260: P LOAD PTR TO FIRST RQE ON RRQ */ 06689602 */*XCP265: D (YES,XCP275,NO,) END OF RQE CHAIN */ 06690002 */* D (NO,XCP270,YES,) SRB BEEN SCHEDULED */ 06690302 */* P (,XCP265) LOAD PTR TO NEXT RQE IN CHAIN */ 06690702 */*XCP270: L IECVRCHN: CHAIN IOB TO RESTORE CHAIN */ 06690802 */* P (,XCP510) SET PURGE CODE, RESET ANY SPECIAL FLAGS */ 06690902 */*XCP275: D (NO,XCP280,YES,) ANY 160 BYTE BLOCKS */ 06691002 */* L IECVSMGR: FREE ACCUMULATED 160 BYTE BLOCKS */ 06691402 */*XCP280: P (,XCP203A) RESTORE ORIGINAL RQE AND ENVIRONMENT */ 06691502 */*XCPMAP: E MAP TO IOB SUBROUTINE */ 06691802 */* P SET COMMON FLAGS IN IOSFLA INTO IOBFLAG1 */ 06691902 */* P MOVE THE CSW FROM IOSB TO IOB */ 06692002 */* D (NO,XCPMAP2,YES,) IS THIS ENTRY FROM DIE */ 06692802 */* L IEAPTRV: CONVERT REAL CSW ADDR TO VIRT */ 06693702 */* P STORE NEW ADDRESS IN CSW IN IOB */ 06694602 */*XCPMAP2: D (NO,XCPMAP1,YES,) VIRTUAL REQUEST */ 06695502 */* P POINT TO THE VIRTUAL ADDR IN REAL CCW STRING */ 06696402 */* L IECVTCCW: TRANSLATE CSW TO VIRTUAL */ 06697302 */* P STORE IN CSW ADDRESS IN IOB */ 06698202 */*XCPMAP1: P MOVE SENSE AND COND CODE TO IOB FROM IOSB */ 06699102 */* D (YES,%RTN2,NO,) CODE UNKNOWN TO CURRENT AM */ 06700002 */* P MOVE ECB COMPL CODE TO IOB */ 06700902 */*%RTN2: R RETURN TO CALLING ROUTINE */ 06701802 */*IECVEXTC: E EXTENT CHECK FROM DASD ERP */ 06702702 */* P SAVE REGS 4-14 ESTABLISH BASE REG */ 06703602 */* S XCPFRR: SET FRR AREA IN STACK 12=SAVE AREA */ 06704502 */* P LOAD POINTERS TO IOSB AND RQE */ 06705402 */* S XCPENVL: LOAD ENVIRONMENTAL REGS */ 06706302 */* D (YES,XCPEXTA,NO,) SYSTEM RQE */ 06707202 */* S XCPVAL: VALIDITY CHECK CONTROL BLOCKS */ 06708102 */*XCPEXTA: S XCPEXT: EXTENT CHECK SEEK ADDRESS */ 06709002 */* P DELETE FRR FROM STACK */ 06709902 */* P RESTORE REGS 4-14 AND 1 */ 06710802 */* R RETURN TO ERP R 14 + R 15 */ 06711702 */*XCPEXT: E EXTENT CHECK SUBROUTINE */ 06712602 */* P CALCULATE EXTENT ADDRESS USING M FIELD */ 06713502 */* D (YES,XCPEXTE,NO,) SEEK ADR LT LOW CCHH */ 06714402 */* D (YES,XCPEXTE,NO,) SEEK ADR GT HIGH CCHH */ 06715302 */* D (NO,XCPEXTE,YES,) BIN NUMBER THE SAME */ 06716202 */* P (,%RTN3) ZERO REG 15 AS RETURN CODE */ 06717102 */*XCPEXTE: P LOAD SAVE AREA POINTER */ 06718002 */* P SET END OF EXTENT APPENDAGE EXECUTING */ 06718902 */* P SET REG 6 TO SEEK ADDRESS */ 06719802 */* L (+0,XCPEXTB,+4,XCPEXTS,+8,XCPEXTC) EXECUTE END OF EXTENT 06720702 */*APPENDAGE */ 06721602 */*XCPEXTC: P RESTORE FRR WORK AREA ADDRESS */ 06722502 */* P (,XCPEXT) RESET EOE EXECUTING BIT AND RETURN ADDRESS */ 06723402 */*XCPEXTS: P RESTORE FRR WORK AREA ADDRESS RETURN ADDRESS */ 06724302 */* P INDICATE IGNORE RETURN IN RQEFLAG */ 06725202 */* P RESET EOE ROUTINE IN CONTROL */ 06726102 */*XCPEXTD: P RESET ERROR ROUTINE IN CONTROL */ 06727002 */* P SET RETURN CODE OF 4 */ 06727902 */*%RTN3: R RETURN TO CALLING ROUTINE */ 06728802 */*XCPEXTB: P RESET EOE TRACKING BIT GET FRR POINTER */ 06729702 */* P RESTORE RETURN ADDRESS */ 06730602 */* P (,XCPEXTD) SET EXTENT VIOLATION CODE */ 06731502 */*SETFRR: E ESTABLISH FRR */ 06732402 */* P STORE THE FRR ON THE STACK */ 06733302 */* P GIVE WORK AREA TO CALLER */ 06734202 */* P ZERO THE ENTIRE WORK AREA */ 06735102 */* R RETURN TO CALLING ROUTINE */ 06736002 */*XCPENVL: E ENVIRONMENTAL REG LOAD */ 06736902 */* P LOAD IOB, DEB AND UCB REGS FROM RQE */ 06737802 */* P LOAD DCB ADDRESS FROM DEB */ 06738702 */* R RETURN TO CALLING ROUTINE */ 06739602 */*XCPVAL: E VALIDITY CHECK ROUTINE */ 06740502 */* P MODESET TO USER KEY IN RQE */ 06741402 */*XCPVALA: P ACCESS THE IOB WITH NI */ 06742302 */* P ACCESS THE DCB WITH NI */ 06743202 */* P ACCESS THE ECB WITH NI */ 06744102 */* P MODESET BACK TO KEY ZERO */ 06745002 */* R RETURN TO CALLING ROUTINE */ 06745902 */*XCPPOST: E POST ROUTINE INTERFACE */ 06746802 */* P LOAD POINTER TO ECB */ 06747702 */* P LOAD THE COMPLETION CODE AND SHIFT */ 06748602 */* D (YES,XCPPSTA,NO,) PROTECT KEY LT 8 */ 06749502 */* P (,XCPPSTB) LOAD POST WITH VALCHK ENTRY */ 06750402 */*XCPPSTA: P LOAD POST WITH OUT VALCHK ENTRY */ 06751302 */*XCPPSTB: L IEA0PT0X: POST ECB COMPLETE */ 06752202 */* R RETURN TO CALLING ROUTINE */ 06753102 */*XCPFREE: E FREE RQE ROUTINE */ 06754002 */* D (NO,XCPFREEA,YES,) IPIB POINTER IN RQE */ 06754902 */* P DECREMENT COUNT IN IPIB BY ONE */ 06755802 */* D (NO,XCPFREEA,YES,) COUNT EQUAL ZERO */ 06756702 */*XCPFREEB: P POST THE ECB IN THE IPIB */ 06757602 */*XCPFREEA: P ZERO FIRST WORD OF RQE FOR NO CHAINING */ 06758502 */* L IECVSMGR: FREE 40 BYTE BLOCK */ 06759502 */* R RETURN TO CALLING ROUTINE */ 06760502 */*ABEND000: R ABEND REQUESTOR WITH SPEC ID */ 06761502 */*IECVX025: E ENTRY FROM STAGE 3 EXIT EFF */ 06792502 */* P SAVE REGS, ESTABLISH ADDRESSABILITY */ 06793502 */* P SAVE CONTENTS OF REGS NEEDED BY FREE RQE RTN */ 06794502 */* S XCPFREE: FREE RQE */ 06795502 */* P RESTORE REGISGERS 10-14, 2-5 */ 06796502 */* R RETURN TO STAGE 3 EXIT EFF */ 06797502 */*XCPTERM: E TERMINATION ROUTINE */ 06798502 */* P SET UP ADDRESSABILITY SAVE REG 14 */ 06799502 */* S SETFRR: ESTABLISH FRR AREA 12=FRR AREA */ 06800502 */*XCPTERMA: P GET THE LOCAL LOCK */ 06801502 */* P INIT FRR AREA WITH TERM RTN BIT, CRQE PTR SAVE AREA R 14 */ 06802502 */* P LOAD POINTER TO RQE */ 06803502 */* S XCPENVL: LOAD ENVIRONMENTAL REGISTERS */ 06804502 */* D (YES,XCPTERMB,NO,) SYSTEM RQE */ 06805502 */* S XCPVAL: VALIDITY CHECK CONTROL BLOCKS */ 06806502 */*XCPTERMB: D (NO,XCP500,YES,) PROGRAM CHECK IN EXCP OR IOS */ 06807502 */* P ABEND THE REQUESTOR VIA CALLRTM */ 06808502 */* P RESTORE RQE ADDRESS */ 06809502 */*XCP500: D (NO,XCP505,YES,) TAPE DEVICE */ 06810502 */* P INCREMENT BLOCK COUNT BY NUMBER IN IOB */ 06811502 */*XCP505: D (YES,XCP570,NO,) RE-EXCP REQUEST */ 06812502 */*XCP510: D (YES,XCP515,YES,) NO POST FLAG ON */ 06813502 */* S XCPPOST: POST ECB COMPLETE */ 06814502 */*XCP515: D (NO,XCP530,YES,) FIXING BEEN DONE FOR RQE */ 06815502 */* D (NO,XCP520,YES,) VIRTUAL REQUEST */ 06816502 */* P SET TRANSLATOR OPTION TO UNFIX */ 06817502 */* L (,XCP525) IECVTCCW: UNFIX PAGES */ 06818502 */*XCP520: D (NO,XCP528,YES,) EXCPVR REQUEST */ 06819502 */* P LOAD POINTER TO FIX LIST AND SET UNFIX OPTION */ 06820502 */* L IEAVPSIB: UNFIX PAGES */ 06821502 */* D (0,XCP525,N-0,) RETURN CODE */ 06822502 */* P (,ABEND000) MARK UNFIX ERROR */ 06823502 */*XCP525: P RESTORE RQE ADDRESS */ 06824502 */*XCP528: P RESET FLAGS IN RQE DEPICTING STATUS */ 06825502 */*XCP530: D (NO,XCP545,YES,) WAS THERE A TCCW */ 06826502 */* P LOAD POINTER TO SRB */ 06827502 */* P STORE TCCW POINTER INTO SRB CHAIN FIELD */ 06828502 */* D (YES,XCP544,NO,) VIRTUAL REQUEST */ 06829502 */* P ZERO FIRST WORD OF TCCW FOR CHAIN */ 06830502 */*XCP544: S XCP700: FREE 160 BYTE BLOCKS */ 06831502 */*XCP545: D (YES,XCP560,NO,) RQE UNRELATED */ 06832502 */* P POINT TO DEB RRQ */ 06833502 */*XCP550: S XCP800: DEQUEUE RQE FROM RRQ */ 06834502 */*XCP560: D (YES,XCP565,NO,) NO FREE RQE FLAG ON */ 06835502 */* S XCPFREE: FREE THE RQE */ 06836502 */*XCP565: D (YES,XCPEXIT,NO,) REQUEST UNRELATED */ 06837502 */* D (NO,XCPEXIT,YES,) TERM RTN ENTRANCE */ 06838502 */* P LOAD POINTER TO RRQ */ 06839502 */* D (YES,XCPEXIT,NO,) EMPTY QUEUE */ 06840502 */* D (YES,XCP260,NO,) ENTERED FROM RR PURGE */ 06840902 */* P LOAD POINTER TO NEXT RQE AND STORE AS CURRENT */ 06841502 */* S XCPENVL: LOAD ENVIRONMENTAL REGISTERS */ 06842502 */* D (YES,XCPEXITA,NO,) PERM ERROR IN LAST REQUEST */ 06843502 */* D (YES,XCPEXIT,NO,) RQE ALREADY SCHEDULED */ 06844502 */* D (YES,XCP155,NO,XCP050) RQE STARTABLE */ 06845502 */*XCP570: D (NO,XCP590,YES,) VIRTUAL REQUEST */ 06846502 */* P SET UP FOR UNFIX */ 06847502 */* L IECVTCCW: UNFIX PAGES */ 06848502 */* P GET CHAIN FROM TCCW FIRST FIELD */ 06849502 */* P STORE TOP OF CHAIN AS BEB SECOND AS FIX */ 06850502 */* D (NO,XCP590,YES,) ANYTHING LEFT IN CHAIN */ 06851502 */* S XCP700: FREE CORE THAT IS LEFT */ 06852502 */*XCP590: D (NO,XCP105,YES,) RELATED REQUEST */ 06853502 */* D (YES,XCP565,NO,) ONLY RQE ON QUEUE */ 06854502 */*XCP600: S XCP800: DEQUEUE RQE FROM QUEUE */ 06855502 */*XCP620: P STORE RQE IN CHAIN OF LAST ON QUEUE */ 06856502 */* P STORE RQE AS LAST ON QUEUE */ 06857502 */* P (,XCP565) STORE END OF CHAIN POINTER IN RQE */ 06858502 */*XCP700: E QUEUE 160 BYTE BLOCKS */ 06859502 */* P ZERO COUNT REGISTER, COMPARE REGISTER */ 06860502 */*XCP720: P ADD ONE TO COUNT */ 06861502 */* D (YES,XCP740,NO,) END OF CHAIN */ 06862502 */* P (,XCP720) LOAD POINTER TO NEXT BLOCK */ 06863502 */*XCP740: P MOVE CURRENT POINTER TO CHAIN */ 06864502 */* P STORE NEW CURRENT POINTER */ 06865502 */* P INCREMENT COUNT OF BLOCKS */ 06866502 */* R RETURN TO CALLING ROUTINE */ 06867502 */*XCP800: E DEQUEUE RQE ROUTINE */ 06868502 */* P LOAD POINTER TO NEXT RQE */ 06869502 */* D (YES,%RTN4,NO,) END OF CHAIN */ 06870502 */* D (YES,XCP850,NO,) THIS THE PRESENT RQE */ 06871502 */* P (,XCP800) POINT TO NEXT RQE */ 06872502 */*XCP850: P MOVE CHAIN OF THIS TO PREVIOUS */ 06873502 */* D (YES,%RTN4,NO,) DONE WITH DEQUEUE */ 06874502 */* P STORE AS LAST IN RRQ */ 06875502 */*%RTN4: R RETURN TO CALLING ROUTINE */ 06877502 */*IECVXTRM: E PURGE ENTRY POINT */ 06878502 */* P (,XCP510) SET UP FRR AREA WITH FLAGS, RETURN AND SAVE PTRS */ 06879502 */*IECVEXCP: END */ 06880502 PRINT ON 06881502 TITLE ' IECVEXCP - EXCP PROCESSOR - DSECTS' 06882502 IEZIOB 06906002 EJECT 06911502 DCBD DSORG=PS 06917002 EJECT 06922502 UCB DSECT 06928002 IEFUCBOB 06933502 EJECT 06939002 IEZDEB LIST=NO @ZA27456 06944503 EJECT 06950021 IKJTCB 07100021 EJECT 07150021 IHAPQE 07200021 EJECT 07250021 IEZJSCB 07300021 EJECT 07350021 CVT DSECT=YES 07400021 EJECT 07450021 IECDIOCM 07500021 EJECT 07550021 IHAASCB 07600021 EJECT 07650021 IHAASXB 07700021 EJECT 07750021 IHARB 07800021 EJECT 07850021 IHAPSA 08000021 EJECT 08050021 IHASRB 08100021 EJECT 08150021 IECDEPCB @ZA12705 08155003 EJECT @ZA12705 08160003 IECDIOSB @ZA12705 08170003 EJECT @ZA12705 08170503 IECDIPIB @ZA12705 08171003 EJECT @ZA12705 08171503 IECDPIRL @ZA12705 08172003 EJECT @ZA12705 08172503 IECDRQE @ZA12705 08173003 EJECT @ZA12705 08173503 IECDTCCW @ZA12705 08174003 EJECT @ZA12705 08174503 IECDXDBA @ZA12705 08175003 EJECT @ZA12705 08175503 IHAFRRS @ZA12705 08176003 EJECT @ZA12705 08176503 IECDXFRR @ZA12704 08177003 EJECT @ZA12704 08177503 IECDSFRR @ZA12704 08180003 EJECT 09700021 RRQ DSECT 09750021 *********************************************************************** 09800021 * * 09850021 * RELATED REQUEST QUEUE DSECT. THIS QUEUE RESIDES IN LSQA, * 09900021 * SUBPOOL 254. IT IS FREED BY CLOSE OR AT TASK TERMINATION * 09950021 * * 10000021 *********************************************************************** 10050021 SPACE 2 10100021 RRQFIRST DS A FIRST RQE ON QUEUE 10150021 RRQLAST DS A LAST RQE ON QUEUE 10200021 RRQBL EQU *-RRQ LENGTH OF THE RRQ 10250021 TITLE ' IECVEXCP - EXCP PROCESSOR - EQUATES' 10300002 *********************************************************************** 10350021 * * 10400021 * REGISTER DEFINITIONS * 10450021 * * 10500021 *********************************************************************** 10550021 SPACE 1 10600021 REG0 EQU 0 PARAMETER REGISTER 0 10650021 TCBRG0 EQU 0 TCB DURING VALIDITY CHECK 10700021 * 10720003 REG1 EQU 1 PARAMETER REGISTER 1 10750021 RQEREG EQU 1 REQUEST ELEMENT ADDRESS 10800021 * 10820003 IOBREG EQU 2 IOB ADDRESS 10850021 * 10870003 DEBREG EQU 3 DEB ADDRESS 10900021 * 10920003 DCBREG EQU 4 DCB ADDRESS 10950021 TCBREG EQU 4 TCB ENVIRONMENTAL REGISTER 11000021 REG4 EQU 4 IECVPST FRR REG. @Y30IPLC 11030003 * 11040003 BASREG EQU 5 BASE REGISTER 11050021 * 11070003 SEEKRG EQU 6 SEEK ADDRESS POINTER 11100002 WKREG6 EQU 6 WORKING REGISTER 11150002 * 11170003 UCBREG EQU 7 UCB REGISTER 11200021 WKREG7 EQU 7 WORKING REGISTER. @Y30IPLC 11212003 * 11220003 IOSBRG EQU 8 IOSB ADDRESS 11250021 * 11270003 WKREG9 EQU 9 WORKING REGISTER 11300021 TERMBAS EQU 9 TERMINATION ROUTINE BASE REG 11310002 * 11330003 WKREGA EQU 10 WORKING REGISTER 11350021 * 11360003 ECBREG EQU 11 ECB ADDRESS @Y30IPLB 11370003 WKREGB EQU 11 WORKING REGISTER 11400021 * 11420003 FRRREG EQU 12 FRR WORK AREA ADDRESS 11450002 * 11470003 REG13 EQU 13 SAVE AREA ADDRESS 11500021 * 11520003 LNKREG EQU 14 RETURN REGISTER 11550021 * 11570003 APBSRG EQU 15 BRANCHING REGISTER 11600021 EJECT 11650021 *********************************************************************** 11660003 * * 11670003 * EQUATES USED WITHIN EXCP PROCESSING * 11700003 * * 11710003 *********************************************************************** 11720003 SPACE 2 11730003 *---------------------------------------------------------------------* 11770003 * ECB DEFINITION * 11800003 *---------------------------------------------------------------------* 11810003 SPACE 1 11850021 ECBFL EQU 0 FLAGS 11900021 SPACE 11910003 *---------------------------------------------------------------------* 11920003 * DEFINITION OF COMPLETION CODES * 11950003 *---------------------------------------------------------------------* 11955003 SPACE 11970003 ECBNORM EQU X'7F' NORMAL COMPLETION 12000021 ECBINTC EQU X'7E' INTERCEPT CODE 12050021 ECBPERM EQU X'41' PERMANENT ERROR 12100021 ECBEXTR EQU X'42' EXTENT ERROR 12150021 ECBINTP EQU X'44' INTERCEPT POST CODE 12200021 ECBPGMCK EQU X'45' PROGRAM CHECK IN IOS OR EXCP 12250021 ECBPURG EQU X'48' PURGED REQUEST 12300021 ECBMACH EQU X'50' M.P. ERROR 12350021 PERM EQU X'20' IN ECB, IF OFF, CONDITION IS @YM1141 12360002 * PERMANENT @YM1141 12370002 SPACE 12400003 *---------------------------------------------------------------------* 12410003 * VARIOUS HEXIDECIMAL EQUATES * 12420003 *---------------------------------------------------------------------* 12425003 SPACE 12440003 PPKEY EQU X'80' PROTECT KEY MASK @OZ00836 12450003 SUPST EQU X'01' PROBLEM PROGRAM STATE 12500021 UCB3525 EQU X'0C' 3525 DEVICE TYPE DESCRIPTION 12550021 DCBASSOC EQU X'04' 3525 ASSOCIATED DATA SETS 12600021 LASTENT EQU X'80' LAST ENTRY INDICATOR FOR FIX LIST 12650021 UNFIXIND EQU X'20' UNFIX INDICATION TO PAGE FIX 12700021 LTFIX EQU X'02' LONG TERM FIX INDICATOR @YM07593 12705002 FIX EQU X'40' FIX INDICATOR 12710002 F0 EQU X'F0' MASK OF F0 @ZA06067 12730003 FF EQU X'FF' MASK OF ALL BITS ON 12750021 F4 EQU X'F4' EXCPVR INDICATOR 12760002 DVE EQU X'04' DEVICE END INTERRUPT 12800021 CHE EQU X'08' CHANNEL END INTERRUPT 12850021 PCI EQU X'80' PCI INTERRUPT BIT IN CSW 12900021 WAITBIT EQU X'80' WAIT BIT IN ECB @YM05629 12910002 SYSTMKEY EQU X'7F' SYSTEM PROTECT KEY MAXIMUM @ZA06067 12910503 EXTMSK EQU X'FE' MASK TO TEST FOR EXTENTS 12912003 UCB22503 EQU X'02' 2250 MODEL 3 12913003 UEX EQU X'01' UNIT EXCEPTION 12914003 WLR EQU X'40' WRONG LENGTH RECORD 12915003 XCPX00 EQU X'00' BYTE FOR IMMEDIATE INSTRS. @YM05514 12916003 XCPK0BYP EQU X'02' KEY 0, BYPASS SMF COUNTING @ZA16147 12916503 SPACE 12917003 *---------------------------------------------------------------------* 12918003 * VARIOUS BINARY EQUATES * 12919003 *---------------------------------------------------------------------* 12919503 SPACE 12923003 XCP6 EQU B'0110' MASK FOR 'ICM' INSTRS @Y30IPLB 12926003 XCP7 EQU B'0111' MASK FOR 'ICM' INSTRS @YM06703 12929003 SPACE 12932003 *---------------------------------------------------------------------* 12935003 * MISCELLANEOUS CONSTANTS EQUATED * 12938003 *---------------------------------------------------------------------* 12939003 SPACE 12944003 C0 EQU 0 CONSTANT OF 0 12950003 C1 EQU 1 CONSTANT OF 1 13000003 C2 EQU 2 CONSTANT OF 2 13050003 C3 EQU 3 CONSTANT OF 3 13100021 C4 EQU 4 CONSTANT OF 4 13150021 C5 EQU 5 CONSTANT OF 5 13200021 C6 EQU 6 CONSTANT OF 6 13250021 C7 EQU 7 CONSTANT OF 7 13300021 C8 EQU 8 CONSTANT OF 8 13350021 C12 EQU 12 CONSTANT OF 12 13360002 C16 EQU 16 CONSTANT OF 16 13400021 C20 EQU 20 CONSTANT OF 20 13420002 C24 EQU 24 CONSTANT OF 24 13450021 C28 EQU 28 CONSTANT OF 28 13500021 C60 EQU 60 CONSTANT OF 60 13510002 C64 EQU 64 CONSTANT OF 64 13520002 C68 EQU 68 CONSTANT OF 68 13530002 SMFXCP EQU 0 OFFSET INTO SMF FOR INITIAL ENTRY 13950021 SMFAPP EQU 4 OFFSET INTO SMF FOR RE-EXCP 14000021 LORD3BYT EQU 7 MASK TO LOAD 3 BYTE ADCONS 14020003 LORD2BYT EQU 3 MASK TO LOAD 2 BYTES @ZA07510 14030003 SMFPCI EQU 8 OFFSET INTO SMF FOR PCI-S 14050021 CVTADR EQU 16 OFFSET TO CVT PTR 14052003 XRQEGET EQU 20 IECVSMGR OFFSET FOR RQE OBTAIN 14054003 XRQEFREE EQU 24 IECVSMGR OFFSET FOR RQE RELEASE 14056003 SVRALN EQU 64 LENGTH OF SAVE AREA 14060002 A0 EQU 160 CONSTANT OF 160 14063003 IOBTYPS EQU IOBRRT2+IOBRRT3 RELATED REQUEST TYPES YM1319 14066003 EJECT 14070003 *---------------------------------------------------------------------* 14080003 * VARIOUS ABEND CODES ISSUED BY THE EXCP PROCESSOR * 14090003 *---------------------------------------------------------------------* 14100003 SPACE 14104003 DUMPTCB EQU X'15C' INVALID SVC 92 CALL @Y30IPLB 14108003 DUMPSUBS EQU X'172' DUMP CODE FOR SUBSYSTEM @Y30IPLB 14112003 DUMPDEB EQU X'300' INVALID DEB ADDRESS @Y30IPLB 14116003 DUMPDCB EQU X'400' INVALID DCB ADDRESS @Y30IPLB 14120003 DUMPUCB EQU X'500' INVALID UCB ADDRESS @Y30IPLB 14124003 NONXCPAB EQU X'E00' ABEND OUTSIDE EXCP WITHOUT @ZA05361 14128003 * DEBUG AREA @ZA05361 14129003 DUMPFUNF EQU X'800' PAGE FIX OR UNFIX FAILURE @Y30IPLB 14132003 CODEA00 EQU X'A00' PROG CHECK IN USER APPENDAGE@Y30IPLB 14136003 SPACE 4 @ZA06068 14136303 ***************************************************************@ZA06068 14136603 * *@ZA06068 14136903 * TEMPORARY EQUATE DEFINITION FOR IOSB BIT DEFINITION *@ZA06068 14137203 * - BIT 1 OF IOSDIE FIELD IN IOSB *@ZA06068 14137503 * *@ZA06068 14137803 IOSECEDE EQU X'40' PCI DIE WITH CE/DE *@ZA06068 14138103 * ENDING STATUS *@ZA06068 14138403 * *@ZA06068 14138703 ***************************************************************@ZA06068 14139003 TITLE ' IECVEXCP -- EXCP PROCESSOR -- FRONT ENTRIES' 14140003 SPACE 5 14144003 IECVEXCP CSECT 14150021 SPACE 14170003 ENTRY IGC000,IGC092,IGC114 14200021 SPACE 14220003 ENTRY IECVEXTC,IECVX025,IECXAPG,IECVXTRM 14250002 SPACE 14252003 ENTRY IECVEXP1,IECVEXP2 14255002 ENTRY IECVEXP3,IECVEXP4 @ZA12706 14255603 ENTRY IECVEXP5,IECVEXP6 @ZA12706 14256203 ENTRY IECVEXP7,IECVEXP8 @ZA27673 14256603 SPACE 14257003 DC C'IECVEXCP' STORAGE DUMP IDENTIFIER 14260002 DC C'&SYSDATE' @ZA08150 14280003 SPACE 3 @ZA06068 14280903 ************************************************************** @ZA06068 14281803 * * 14282703 * TYPE 1 SVC ENTRY : SVC 0, 92 AND 114 * 14283603 * REGISTERS ON ENTRY - * 14284503 * 0 SVC CALLERS, FOR SVC 92 TCB ADDRESS * 14285403 * 1 IOB ADDRESS * 14286303 * 3 CVT ADDRESS * 14287203 * 4 TCB ADDRESS * 14288103 * 5 CURRENT RB POINTER * 14289003 * 6 SVC ROUTINE ENTRY ADDRESS * 14289903 * 7 ASCB ADDRESS * 14290803 * 13 SVC CALLER SAVE ADDRESS * 14291703 * 14 RETURN ADDRESS * 14292603 * * 14293503 * REGISTERS 0, 1, 13 AND 15 - CONTENTS WHEN SVC EXECUTED * 14294403 * REGISTERS 2, 8, 9, 10, 11 AND 12 UNPREDICTABLE * 14295303 * * 14296203 * ALL THREE ENTERED WITH LOCAL LOCK, SUPERVISORY STATE, KEY 0* 14297103 * * 14298003 ************************************************************** @ZA06068 14300003 TITLE ' IECVEXCP -- EXCP PROCESSOR -- SVC 92 ENTRANCE' 14310003 *********************************************************************** 14350021 * * 14400021 * SVC 92 -- THIS ROUTINE USES THE TCB ADDRESS IN REGISTER ZERO * 14450021 * TO OVERLAY THE TCB ADDRESS IN THE ENVIRONMENTAL * 14500021 * REGISTER FOUR. THE REQUEST WILL BE PROCESSED AS A * 14550021 * NORMAL EXCP OR EXCPVR. * 14600021 * * 14650021 * ENTRY - IGC092 * 14700021 * * 14750021 * INPUT - REGISTER 0 * 14800021 * BYTE 0 - RESERVED FOR OPTION FIELD * 14850021 * BYTE 1-3 - TCB ADDRESS * 14900021 * REGISTER 1 * 14950021 * IOB ADDRESS * 15000021 * * 15050021 *********************************************************************** 15100021 SPACE 2 15150021 IGC092 DS 0D ALIGN ON DOUBLE WORD BOUNDARY 15200021 * FOR SVC ENTRY 15250021 BALR BASREG,REG0 ESTABLISH BASE REGISTER 15300021 USING *,BASREG ADDRESSABILITY FOR MODULE 15350021 USING FLC,REG0 ADDRESSABILITY FOR LOW CORE 15400021 USING TCB,TCBREG ADDRESSABILITY TO TCB 15450021 L WKREGA,TCBRBP POINT TO TOP RB ON CHAIN 15500021 USING RBBASIC,WKREGA ADDRESSABILITY TO RB 15550021 TM RBOPSW+C1,SUPST SUPVR STATE CALLER @YM06006 15600002 BZ IGC092A YES,......CONTINUE @Y30IPLB 15650003 DROP TCBREG,WKREGA RELEASE REGISTERS 15700021 SPACE 15710003 LA REG1,DUMPTCB SET UP ABEND CODE @Y30IPLB 15720003 B ABEND000 GO TO ABTERM 15730003 SPACE 2 15750021 IGC092A LR TCBREG,TCBRG0 CHANGE TCB ADDRESSES 15850002 LTR REG1,REG1 IOB PARAMETER REGISTER NEGATIVE 15900021 BP IGC000 NO, HANDLE LIKE AN EXCP 15950021 * YES, HANDLE LIKE AN EXCPVR @Y30IPLB 16000003 SPACE 2 16050021 DROP BASREG 16250021 TITLE ' IECVEXCP -- EXCP PROCESSOR -- SVC 114 ENTRANCE' 16300002 *********************************************************************** 16350021 * * 16400021 * SVC 114 -- THIS IS THE ENTRY POINT FOR EXCPVR REQUESTS. THE * 16450021 * USE OF EXCPVR IS VALIDITY CHECKED AND A FLAG IS * 16500021 * SET TO TELL MAINLINE THAT IT IS EXCPVR. * 16550021 * * 16600021 * INPUT -- REGISTER 1 CONTAINS IN: * 16650021 * BYTE 0 - X'F4' * 16700021 * BYTES 1-3 - IOB ADDRESS * 16750021 * * 16800021 * EXITS -- VALID EXCPVR REQUEST -- XBASE WITH WKREG6 SET TO SUBSYS * 16850021 * INVALID REQUEST -- ABEND000 * 16900021 * * 16950021 *********************************************************************** 17000021 SPACE 2 17050021 IGC114 CNOP 0,8 ALIGN ON DBL WORD BOUNDARY @ZA08150 17100003 * FOR SVC ENTRY 17150021 BALR BASREG,REG0 ESTABLISH BASE REGISTER 17200021 USING *,BASREG ADDRESSABILITY FOR MODULE 17250021 USING IOBSTDRD,REG1 ADDRESSABILITY TO IOB 17300002 * TEST AUTHORIZATION @YM07631 17350002 USING TCB,TCBREG ADDRESSABILITY TO TCB 17900021 L WKREGA,TCBRBP POINT TO TOP RB ON CHAIN 17950021 USING RBBASIC,WKREGA ADDRESSABILITY TO RB 18000021 LA WKREG6,RQE114 SET INDICATOR FOR EXCPVR @ZA16147 18020003 TM RBOPSW+C1,PPKEY USER IN PROTECT KEY 0-7 ? @OZ00836 18050003 BZ XCP000 YES, VALID EXCPVR REQUEST @ZA16147 18070003 TM RBOPSW+C1,SUPST USER IN SUPERVISOR STATE @YM06006 18150002 DROP WKREGA RELEASE REGISTER 18200021 BZ XCP000 YES, VALID EXCPVR REQUEST @ZA16147 18220003 L WKREGA,TCBJSCB GET ADDRESS OF JSCB IF ONE 18300021 LA WKREGA,C0(WKREGA) ZERO HIGH BYTE OF REGISTER 18350021 LTR WKREGA,WKREGA DOES THE JSCB EXIST 18400021 BZ IGC114A NO, @ZA16147 18420003 USING IEZJSCB,WKREGA ADDRESSABILITY FOR JSCB 18500021 TM JSCBOPTS,JSCBAUTH JSCB SHOW AUTHORIZATION 18550021 BO XCP000 YES, VALID EXCPVR REQUEST @ZA16147 18570003 SPACE 2 18650021 IGC114A EQU * @ZA16147 18670003 O WKREG6,LISTFIX INDICATE FURTHER EXCPVR @ZA16147 18700003 B XCP000 TEST REQUIRED IN EXCP VAL @ZA16147 18750003 * CHECK COMMON CODE. @ZA16147 18800003 TITLE ' IECVEXCP -- EXCP PROCESSOR -- SVC 0 ENTRANCE' 18950002 *********************************************************************** 19000021 * * 19050021 * SVC 0 -- THIS IS THE ENTRY POINT FOR SVC 0. THIS ROUTINE * 19100021 * DETERMINES WHETHER THE REQUESTOR IS VIRTUAL OR REAL. * 19150021 * * 19200021 * INPUT -- REGISTER 1 SET TO IOB ADDRESS * 19250021 * * 19300021 * OUTPUT -- WKREG6 SET TO EITHER REQVIRT OR REQ1TO1 * 19350021 * * 19400021 *********************************************************************** 19450021 SPACE 2 19500021 IGC000 DS 0D ALIGN ON DOUBLE WORD BOUNDARY 19550021 BALR BASREG,0 SET UP BASE REG 19600021 USING *,BASREG ADDRESSABILITY FOR MODULE 19650021 IGC000A TM TCBFLGS6,TCBRV TEST FOR 1 TO 1 REQUEST 19700021 BZ IGC000C NO, VIRTUAL REQUEST 19750021 SPACE 2 19800021 L WKREG6,TCBPQE LOCATE THE VIRTUAL EQUALS REAL 19850021 USING PQESECT,WKREG6 REGION PQE. FROM THIS CONTROL 19900021 L WKREG6,PQEFPQE BLOCK THE FIRST CCW ADDRESS IS 19950021 L WKREGA,PQEREGN CHECKED FOR WITHIN THE REGION. 20000021 A WKREGA,PQESIZE IF IT IS, THE REQUEST IS CNSIDRD 20050021 CLM WKREGA,LORD3BYT,IOBSTRTB VIRTUAL EQUALS REAL. 20100002 BNH IGC000C IF NOT, IT IS CONSIDERED VIRTUAL. 20150002 SPACE 2 20200021 IGC000B LA WKREG6,RQE1TO1 SET REQUEST TYPE TO VIRTUAL=REAL 20250021 B XCP000 BRANCH TO COMMON SECTION 20300002 SPACE 2 20350021 IGC000C LA WKREG6,RQEVIRT SET REQUEST TYPE TO VIRTUAL 20400021 DROP WKREGA,REG1 RELEASE ADDRESSABILITY 20550021 TITLE ' IECVEXCP -- EXCP PROCESSOR -- VALIDITY CHECK' 20600002 *********************************************************************** 20650021 * * 20700021 * EXCP VALIDITY CHECK * 20750021 * * 20800021 * FUNCTION -- * 20850021 * THIS ROUTINE CHECK THE VALIDITY OF THE VARIOUS CONTROL * 20900021 * BLOCKS USED BY EXCP PROCESSOR. THESE BLOCK ARE THE IOB, * 20950021 * DCB, DEB, AND UCB. THE BLOCK ID IS CHECKED ON THE DEB * 21000021 * THE BACKLINK FROM THE DEB TO THE DCB IS CHECKED. * 21050021 * IF ANY OF THESE CHECKS FAIL, THE REQUESTOR IS ABENDED. * 21100021 * * 21150021 * ENTRY -- XCP000 -- ENTRY FROM EITHER EXCP OR EXCPVR SVCS * 21200021 * * 21250021 * EXITS -- * 21300021 * ABEND000 -- ABEND THE TASK * 21350021 * XCP050 -- GET REQUEST ELEMENT * 21400021 * * 21450021 *********************************************************************** 21500021 SPACE 2 21550021 USING FRREXCP,FRRREG ADDRESSABILITY TO EXCP FRR @ZA12704 21555003 XCP000 EQU * BEGINNING OF COMMON CODE 21600021 BALR BASREG,REG0 ESTABLISH BASE REGISTER 21650021 USING *,BASREG SET UP ADDRESSABILITY 21700021 XCPBASE LR IOBREG,REG1 ESTABLISH IOB REGISTER 21750021 BAL LNKREG,SETFRR ESTABLISH FRR AND INIT WORK AREA 21760002 MVI FRRFLAG,FRRFTE SET FRONT END ENTRANCE 21770002 L WKREG9,ATYPE1EX SET TO TYPE 1 EXIT 21800021 ST WKREG9,FRRRETR ESTABLISH RETURN ADDRESS POINTER 21850021 USING IOBSTDRD,IOBREG ADDRESSABILITY FOR THE IOB 21900021 LR TCBRG0,TCBREG PLACE TCB IN R0 FOR PGM CHECK 21950021 IECVEXP3 EQU * START OF A VALIDITY CHECK @ZA12706 22000003 L DCBREG,IOBDCBPT LOAD DCB ADDRESS INTO REGISTER 22100021 USING IHADCB,DCBREG ADDRESSABILITY FOR DCB 22150021 L DEBREG,DCBDEBAD LOAD DEB ADDRESS INTO REGISTER 22200021 LA DEBREG,0(DEBREG) CLEAR HIGH ORDER BYTE @YA02976 22220003 USING DEBBASIC,DEBREG ADDRESSABILITY FOR DEB 22250021 CLM DCBREG,LORD3BYT,DEBDCBAD+C1 DO DCB POINTERS MATCH 22300002 * BETWEEN IOB AND DEB 22350021 BE XCP010 YES, CONTINUE VALIDITY CHECKS 22400021 SPACE 22420003 IECVEXP4 EQU * END OF A VALIDITY CHECK @ZA12706 22430003 LA REG1,DUMPDCB SET UP ABEND CODE @Y30IPLB 22450003 B ABEND000 ABEND THE TASK 22500021 SPACE 2 22550021 XCP010 EQU * * 22600002 L WKREGA,PSATOLD GET CURRENT TCB PTR @YM06871 22620002 USING TCB,WKREGA ADDRESSABILITY TO TCB 22700021 L WKREGA,TCBRBP LOAD POINTER TO TOP RB 22750021 USING RBBASIC,WKREGA ADDRESSABILITY TO RB 22800021 MVZ FRRWORK,RBOPSW+C1 ISOLATE PROTECTION KEY 22850021 CLI FRRWORK,SYSTMKEY CHECK FOR KEY GREATER THAN 7 22900021 BNH XCP014 NO, DO NOT VAL CK THE DEB @ZA16147 22920003 SPACE 2 23000021 * LINKAGE TO DEB VALIDITY CHECK SUBROUTINE 23050021 LR REG1,DEBREG PLACE DEB IN PARM REGISTER@YA02976 23100003 LR WKREGA,REG0 PLACE TCB IN PARM REGISTER 23150021 L APBSRG,ADEBCHK OBTAIN ADDRESS OF DEB CHK RTN 23200021 BALR LNKREG,APBSRG LINK TO ROUTINE 23250021 B XCP014 NORMAL RETURN, DEB CK OK @ZA16147 23270003 SPACE 2 23350021 XCP013 LA REG1,DUMPDEB ABEND REQUESTOR, INVALID DEB@Y30IPLB 23400003 B ABEND000 ABEND HIM 23450021 SPACE 2 23500021 XCP014 EQU * @ZA16147 23520003 CL WKREG6,XCP114RQ EXCPVR REQUEST ENTRY ?? 23550003 BL XCP016 NO, 23550303 * YES, ADDITIONAL CK REQD @ZA16147 23551003 L WKREGA,DEBAPPAD LOAD PTR TO DEB APPEND TBL @ZA16147 23551503 USING DEBAVT,WKREGA ESTABLISH ADDRESSABILITY @ZA16147 23552003 TM DEBCEAB,DEBESMVR DEB SHOW AUTHORIZATION ? @ZA27456 23552503 BZ XCP015 NO, CHECK EXCPVR VALIDITY @ZA16147 23553003 MVI FRRWORK,XCPK0BYP YES, SET KEY TO 0 AND SET @ZA16147 23553503 B XCP020 TO BYPASS SMF COUNTING. @ZA16147 23554003 XCP015 EQU * @ZA16147 23554503 LTR WKREG6,WKREG6 FURTHER EXCPVR VAL CK REQD @ZA16147 23555003 BP XCP016 NO, VALID EXCPVR REQUEST @ZA16147 23555503 LA REG1,DUMPSUBS YES, INVALID ISSUE ABEND172 @ZA16147 23556003 B ABEND000 ABEND TASK ISSUING EXCPVR @ZA16147 23556503 SPACE 1 @ZA16147 23557003 XCP016 EQU * @ZA16147 23557503 TM FRRWORK,PPKEY REQUESTOR IN SYST KEY (0-7) @ZA16147 23558003 BZ XCP020 YES, BYPASS BLOCK VAL CHKS @ZA16147 23558503 MODESET SWAPKEY,KEYADDR=FRRWORK,WORKREG=15 23560002 BAL LNKREG,XCPVALA VALIDITY CHECK THE BLOCKS 23600002 SPACE 2 23650021 XCP020 EQU * @Y30IPLB 23670003 L WKREGB,IOBECBPT LOAD ECB PTR FROM IOB, @ZA09463 23690003 * USED IN XCP035 ROUTINE TO @ZA09463 23710003 * ZERO ECB FIELD. @ZA09463 23730003 SPACE 1 23750003 TM DEBNMEXT,EXTMSK TEST FOR ANY EXTENTS 23800021 BNZ XCP025 YES, USE M GT 1 DIRECTLY 23850021 LA UCBREG,DEBBASND POINT TO FIRST EXTENT 23900021 USING DEBDASD,UCBREG ADDRESSABILITY TO SINGLE EXTENT 23950021 L UCBREG,DEBUCBA-C1 LOAD POINTER TO UCB 24000021 LA UCBREG,C0(UCBREG) ZERO HIGH ORDER BYTE 24050021 USING UCBOB,UCBREG ADDRESSABILITY FOR UCB 24100021 TM UCBTBYT3,UCB3DISP+UCB3COMM+UCB3DACC DISK,TP OR GRAPHICS 24150021 BZ XCP030 NO, DOESNT HAVE AN M 24200021 *** *** 24206002 * USE THE IOBM FIELD TO INDEX INTO THE DEB TO LOCATE THE UCB * 24212002 * FOR THIS IO REQUEST. THE IOBM FIELD SHOULD BE LESS THAN THE DEB* 24218002 * EXTENT FIELD IN THAT IOBM IS INDEXED FROM 0 - , WHILE THE DEB * 24224002 * IS INDEXED FROM 1 . TO SUPPORT HAND BUILT DEB'S, MUST CONSIDER* 24230002 * DEB'S CONTAINING ZERO FOR THE EXTENT INDEX. * 24236002 *** *** 24242002 SPACE 24244003 XCP025 SLR WKREG9,WKREG9 CLEAR REG FOR INSERT CHAR @Y30IPLB 24246003 SLR WKREGA,WKREGA PREPARE SHIFT REGISTER @Y30IPLB 24248003 IC WKREG9,DEBNMEXT GET NO. OF EXTENTS FROM DEB @Y30IPLB 24250003 IC WKREGA,IOBM GET EXTENT INDEX 24300021 CR WKREGA,WKREG9 IOB EXTENT LOWER THAN MAX 24350002 BL XCP028 YES, VALID DEB 24400002 CLI IOBM,C0 STILL OK IF BOTH ZERO 24410002 BNE XCP013 NOT ZERO, INVALID DEB 24420002 XCP028 IC WKREG9,DEBEXSCL GET EXTENT SIZE 24450002 SLL WKREGA,C0(WKREG9) MULTIPLY BY SIZE 24500021 LA UCBREG,DEBBASND(WKREGA) POINT TO EXTENT 24550021 USING DEBDASD,UCBREG ADDRESSABILITY TO SINGLE EXTENT 24600021 L UCBREG,DEBUCBA-C1 LOAD UCB FROM CORRECT EXTENT 24650002 LA UCBREG,C0(UCBREG) ZERO HIGH ORDER BYTE 24700021 USING UCBOB,UCBREG ADDRESSABILITY FOR UCB 24750021 XCP030 TM UCBID,UCBSTND IS UCB VALID 24800021 BO XCP035 CONTINUE PROCESSING 25600002 SPACE 25620003 LA REG1,DUMPUCB SET UP ABEND CODE @Y30IPLB 25650003 B ABEND000 ABEND THE REQUESTOR 25700021 SPACE 2 25750021 * ALL CONTROL BLOCKS ARE VALID AT THIS POINT. FIELDS THAT 25800021 * REQUIRE SPECIFIC VALUES IN THE IOB ARE TO BE INITIALIZED 25850021 * HERE. 25900021 XCP035 SLR WKREGA,WKREGA ZERO A REGISTER FOR USE HERE@Y30IPLB 25950003 STH WKREGA,IOBERRCT CLEAR ERROR COUNT 26000021 ST WKREGA,IOBFLAG3 CLEAR FOUR BYTES 26050021 ST WKREGA,IOBCSW+C3 CLEAR 2ND HALF OF CSW 26100021 STH WKREGA,IOBSENS0 CLEAR SENSE AREA 26150021 NI IOBFLAG1,IOBDATCH+IOBCMDCH+IOBUNREL+IOBRSTRT CLEAR ALL 26200021 * BYTE CHAIN AND RELATED 26250021 NI IOBFLAG2,IOBRRT2+IOBRRT3+IOBSENSE+IOBSTATO+IOBPNCH 26300002 * TURN OFF THE ERP FLAGS 26350002 MVI IOBECBCC,ECBNORM SET NORMAL COMPLETION FLAG 26400021 MVI IOBSIOCC,C0 ZERO SIO CONDITION CODE 26420002 * WKREGB CONTAINS ECB ADDRESS @ZA09463 26430003 * FROM IOB, LOADED ABOVE IN @ZA09463 26450003 * XCP020 ROUTINE. @ZA09463 26460003 ST WKREGA,C0(WKREGB) INSURE ECB IS ZERO ON @YM08618 26500002 * EXCP ENTRY 26510002 TITLE ' IECVEXCP - EXCP PROCESSOR - GET RQE ROUTINE' 26550002 *********************************************************************** 26600021 * * 26650021 * GET REQUEST ELEMENT AND INITIALIZE * 26700021 * * 26750021 * THIS ROUTINE INTERFACES WITH CORE MANAGEMENT TO GET A * 26800021 * REQUEST ELEMENT. TO DO THIS, IT IS NECESSARY TO HAVE THE * 26850021 * ADDRESS OF A SAVE AREA. SINCE THE LOCAL LOCK IS HELD, THAT * 26900021 * SAVE AREA IS USED. THE ADDRESSES OF THE IOB, DEB, AND TCB * 26950021 * ARE PLACED IN THE RQE AS ARE THE REQUEST TYPES AND FLAGS. * 27000021 * * 27050021 *********************************************************************** 27100021 SPACE 2 27150021 L APBSRG,ACOREMGT GET ADDRESS OF STORAGE MANAGER 27250021 L REG13,PSAAOLD FIND THE ASCB 27300021 USING ASCB,REG13 ADDRESSABILITY FOR ASCB 27350021 LH WKREGB,ASCBASID LOAD THE ASID 27400021 L REG13,ASCBASXB GET THE ADDRESS OF THE ASXB 27600021 USING ASXB,REG13 ADDRESSABILITY TO THE ASXB 27650021 LA REG13,ASXBFLSA POINT TO THE LOCAL LOCK SAVE AREA 27700021 ST REG13,FRRLLSA SAVE THE LOCAL LOCK SAVE AREA PTR 27750021 OI FRRTCNT,FRRG40 COVER SMGR WITH FRR 27770002 BAL LNKREG,XRQEGET(APBSRG) GO TO STORAGE MANAGER 27800002 NI FRRTCNT,FF-FRRG40 TURN OFF COVER OF SMGR 27820002 LR RQEREG,WKREGB PLACE RQE IN CORRECT REGISTER 27850021 USING RQE,RQEREG ADDRESSABILITY TO RQE 27950021 SPACE 2 28000021 ST UCBREG,RQEUCB STORE UCB ADDRESS 28050021 ST IOBREG,RQEIOB STORE IOB PTR IN RQE @ZA12705 28100003 ST DEBREG,RQEDEB STORE DEB PTR IN RQE @ZA12705 28200003 ST TCBRG0,RQETCB SAVE TCB ADDRESS IN RQE 28250021 ST WKREGA,RQETCCW ZERO TCCW FIELD IN RQE @ZA12705 28270003 ST WKREGA,RQENRQE ZERO NEXT RQE FLD IN RQE @ZA12696 28300003 ST WKREGA,RQERRQ ZERO RRQ FIELD IN RQE @ZA12705 28350003 ST WKREGA,RQESRB ZERO SRB FIELD IN RQE @ZA12705 28370003 ST WKREGA,RQEIPIB ZERO IPIB FIELD IN RQE @ZA12705 28500003 ST WKREGA,RQEPRT ZERO FLAG BYTES IN RQE @ZA12705 28550003 IC WKREGA,FRRWORK GET CALLERS PROTECT KEY @ZA12705 28560003 STC WKREGA,RQEPRT AND STORE IN RQE @ZA12705 28570003 STC WKREG6,RQETYPE STORE ENVIRONMENT TYPE FLAGS 28600021 ST RQEREG,FRRCRQE STORE RQE ADDR AS CURRENT 28610003 TITLE 'IECVEXCP - EXCP PROCESSOR - SMF INTERFACE ROUTINE' 28620003 ************** INTERFACE FOR THE SMF ROUTINE ************************ 28653002 * REGISTERS AND THEIR CONTENTS ARE AS FOLLOWS * 28656002 * R0 - TCB ADDRESS * 28659002 * R1 - COUNT OF 1 @ZA05478 28660003 * R3 - DEB ADDRESS * 28662002 * R4 - DCB ADDRESS * 28665002 * R7 - UCB ADDRESS * 28668002 * R14 - RETURN ADDRESS * 28671002 * R15 - ENTRY POINT * 28674002 * * 28677002 * NOTE: R10, R11, R12 AND R13 ARE DESTROYED * 28680002 * * 28683002 *********************************************************************** 28684003 SPACE 28685003 ******* CHECK FOR SMF RECORDING *****************************@ZA06067 28686003 SPACE 1 @ZA06067 28686703 CLI RQEPRT,XCPK0BYP BYPASS SMF COUNTING ?? @ZA16147 28686903 BE XCPVAM @ZA16147 28687103 LR WKREGA,TCBRG0 LOAD TCB ADDRESS @ZA06067 28687403 USING TCB,WKREGA @ZA06067 28687603 L WKREGA,TCBRBP LOAD TOP RB ON TCB CHAIN @ZA06067 28688103 DROP WKREGA @ZA06067 28688403 USING RBBASIC,WKREGA @ZA06067 28688803 TM RBSTAB1,RBFTSVRB CHECK TOP RB FOR PRB OR @ZA16147 28689103 DROP WKREGA SVRB IN USER KEY ------- @ZA16147 28689503 BZ XCPSMF10 ZERO; PRB, DO EXCP COUNTING @ZA16147 28689903 BNO XCPVAM MIXED, BYPASS COUNTING @ZA16147 28690903 TM RQEPRT,PPKEY SVRB RUNNING IN PP KEY ?? @ZA16147 28691603 BZ XCPVAM NO, BYPASS COUNTING @ZA16147 28692303 * YES, DO EXCP COUNTING @ZA16147 28693003 SPACE 1 @ZA06067 28695803 XCPSMF10 EQU * INTERFACE WITH SMF ROUTINE @ZA06067 28696503 OI RQEPRT,RQESMFRQ SET SMF RCDG REQD FLAG @ZA06067 28697203 L APBSRG,ASMFEX LOAD ADDRESS OF SMF ROUTINE 28700021 LR WKREG9,FRRREG SAVE FRR REG 28710002 LR WKREG6,RQEREG SAVE RQE REG OVER INTERFACE @ZA05478 28720003 LA REG1,C1 PASS TO SMF A COUNT OF 1 @ZA05478 28730003 BAL LNKREG,SMFXCP(APBSRG) RECORD THE EXCP 28750021 LR FRRREG,WKREG9 RESTORE FRR REG 28760002 LR RQEREG,WKREG6 RESTORE RQE REG @ZA05478 28765003 L REG13,FRRLLSA RESTORE REGISTER 13 AFTER @YM03250 28770002 * CALL TO SMF ROUTINE 28780002 TITLE ' IECVEXCP -- EXCP PROCESSOR -- VAM WINDOW INTERCEPT' 28800002 *********************************************************************** 28850021 * * 28900021 * DATA SETS WHICH EXIST AS A SUBSET OF VIRTUAL CORE ARE * 28950021 * HANDLED BY THE VIRTUAL ACCESS METHOD WHICH GETS CONTROL * 29000021 * AFTER THE INITIALIZATION OF THE RQE IS COMPLETED. EXCP * 29050021 * PROCESSOR CAN RECOGNIZE A VAM REQUEST BY CHECKING FOR * 29100021 * THE VIRTUAL UCB IDENTIFICATION. VAM IS TREATED AS AN * 29150021 * APPENDAGE WITH IOS PASSING THE FOLLOWING REGISTERS -- * 29200021 * RQEREG, IOBREG,DEBREG,DCBREG,SAVEREG,LNKREG, * 29250021 * AND APBSRG. * 29300021 * UPON RETURN VAM WILL PASS THE RQEREG AND BASEREG WITH * 29350021 * BRANCHES AS FOLLOWS -- * 29400021 * LNKREG+0 - POST, FREE, RETURN RQE * 29450021 * LNKREG+4 - SKIP POST, FREE RQE * 29500021 * LNKREG+8 - SKIP POST, SKIP FREE * 29550021 * * 29600021 *********************************************************************** 29650021 XCPVAM TM UCBJBNR,UCBVRDEV IS THIS A VAM REQUEST 29750002 BZ XCP038 NO, CONTINUE MAIN LINE 29800021 ST FRRREG,RQEIPIB SAVE THE FRR ADDRESS OF RQE 29850021 L FRRREG,ASMFEX LOAD ADDRESS OF SMF ROUTINE 29900021 ST FRRREG,RQETCCW STORE FOR WINDOW INTERCEPT USE 29950021 OI RQETYPE,RQEVAM SET VAM IN CHARGE OF RQE @YM05982 30000002 * ENVIRONMENTAL REGISTERS ARE ALREADY SET UP 30050021 WIEXCP CALL WINDOW INTERCEPT 30100002 B XCPVAMA POST AND FREE THE RQE 30150021 B XCPVAMB FREE THE RQE BUT DONT POST 30200021 B XCPVAMD DONT POST, DONT FREE RQE 30250021 SPACE 1 30300003 XCPVAMA BAL LNKREG,XCPENVL LOAD ENVIRONMENTAL REGISTERS 30350021 BAL WKREG6,XCPPOST POST THE ECB COMPLETE @ZA11892 30370003 B XCPVAMC SKIP TO FREE CALL 30450021 SPACE 1 30500003 XCPVAMB BAL LNKREG,XCPENVL LOAD ENVIRONMENTAL REGISTERS 30550021 XCPVAMC LA WKREGB,XCPFREE GET FINAL DESTINATION ADDR @Y30IPLB 30630003 B XCPVAME ENTER COMMON CODE @Y30IPLB 30660003 SPACE 30690003 XCPVAMD LA WKREGB,XCPVAMF GET DESTINATION ADDRESS @Y30IPLB 30720003 XCPVAME L FRRREG,RQEIPIB LOAD FRR ADDRESS @Y30IPLB 30780003 SLR WKREG9,WKREG9 INITIALIZE A ZERO REG @Y30IPLB 30810003 ST WKREG9,RQEIPIB ZERO IBIP SO NOT MISLEADING @Y30IPLB 30840003 BALR LNKREG,WKREGB PERFORM SPECIFIED REQUEST @Y30IPLB 30870003 SPACE 30900003 XCPVAMF EQU * RETURN LOCATION @Y30IPLB 30930003 B XCPEXIT DETERMINE MODE OF EXCP EXIT @Y30IPLB 30990003 TITLE ' IECVEXCP -- EXCP PROCESSOR -- REQUEST QUEUEING' 31100002 *********************************************************************** 31150021 * * 31200021 * IF THE REQUEST IS A RELATED REQUEST, IT IS HUNG OFF THE RRQ * 31250021 * WHICH IS POINTED TO FROM THE DEB. * 31300021 * * 31350021 *********************************************************************** 31400021 SPACE 2 31450021 XCP038 TM IOBFLAG1,IOBUNREL IS THE REQUEST RELATED 31500021 BO XCP050 NO, NO QUEUEING NECESSARY 31550021 SLR WKREG9,WKREG9 ZERO A REGISTER FOR COMPARE @Y30IPLB 31600003 MVC FRRWORK,IOBFLAG2 BYTE CONTAINING RELATED FLAGS 31650021 NI FRRWORK,IOBTYPS ZERO ALL BUT TYPES FIELD 31700002 IC WKREG9,FRRWORK PLACE BITS IN A REGISTER 31750021 SRL WKREG9,C4 SHIFT TO LOW BITS 31800021 LA WKREG9,C1(WKREG9) ADD ONE TO THE RESULT 31850021 EX WKREG9,RRTYPOR OR THE RELATED REQUEST TYPE WITH 31900021 * THE ENVIRONMENT TYPE 31950021 L WKREG9,DEBRRQ LOCATE THE DEB R R QUEUE 32000002 LA WKREG9,C0(WKREG9) ZERO HIGH BYTE 32050021 LTR WKREG9,WKREG9 THIS DEB 32100021 BNZ XCP040 YES, DO NOT HAVE TO GET ONE 32150021 TM UCBTBYT3,UCB3UREC IS THIS A UNIT RECORD DEVICE 32200021 BZ XCP039 NO, CONTINUE PROCESSING 32250021 SPACE 1 32270003 CLI UCBTBYT4,UCB3525 IS THIS A 3525 32300021 BNE XCP039 NO, CONTINUE PROCESSING 32350021 SPACE 1 32370003 USING IHADCB,DCBREG ADDRESSABILITY TO DCB 32400021 TM DCBMACF1,DCBMRECP IS ACCESS METHOD @ZA25344 32410003 BO XCP039 EXCP? YES @ZA25344 32420003 TM DCBQSWS,DCBASSOC ARE THERE ASSOCIATED DATA SETS 32450021 BZ XCP039 NO, SKIP SEARCHING FOR AN RRQ 32500021 L WKREG9,DEBRDCB LOAD READ DCB ADDRESS 32550021 BAL LNKREG,XCP039B CHECK FOR RRQ QUEUE @Y30IPLB 32600003 L WKREG9,DEBPDCB LOAD PUNCH DCB ADDRESS 32650021 BAL LNKREG,XCP039B CHECK FOR RRQ QUEUE @Y30IPLB 32700003 L WKREG9,DEBWDCB LOAD PRINT DCB ADDRESS 32750021 BAL LNKREG,XCP039B CHECK FOR RRQ QUEUE @Y30IPLB 32800003 * THERE ISNT ONE, GET ONE 32850003 EJECT 32900003 * ISSUE A GETMAIN TO OBTAIN AN RRQ FROM SUBPOOL 254 @ZA08736 32950003 XCP039 LR WKREG6,RQEREG SAVE RQE ACROSS INTERFACE 33700021 L TCBREG,RQETCB PLACE TCB INTO A REGISTER 33750002 L UCBREG,PSAAOLD GET ASCB ADDRESS 33800021 GETMAIN RU,LV=RRQBL,SP=254,BRANCH=YES,KEY=0 33850021 SPACE 1 33900003 LR WKREG9,REG1 SAVE ADDRESS OF RRQ 33950021 LR RQEREG,WKREG6 RESTORE RQE ADDRESS 34000021 L UCBREG,RQEUCB RESTORE UCB ADDRESS 34050021 L DEBREG,RQEDEB RESTORE DEB REGISTER CONTENTS 34100021 L DCBREG,DEBDCBAD RELOAD DCB ADDRESS 34102002 STCM WKREG9,LORD3BYT,DEBRRQ+C1 STORE ADDRESS OF RRQ IN DEB 34110002 SPACE 1 34130003 USING RRQ,WKREG9 ADDRESSABILITY TO RRQ 34150021 XCP039A ST RQEREG,RRQFIRST STORE RQE AS FIRST ON QUEUE 34200002 SLR WKREG6,WKREG6 ZERO WKREG6,USED AS PARM REG@Y30IPLB 34250003 B XCP045 CONTINUE AS IF NOT FIRST ON QUE 34300021 SPACE 2 34303003 XCP039B CR DCBREG,WKREG9 IS THIS THE PRESENT DCB @Y30IPLB 34306003 BER LNKREG YES,SKIP LOOKING AT THIS ONE@Y30IPLB 34309003 LTR WKREG9,WKREG9 IS THIS ONE OF THE DCBS 34312003 BZR LNKREG NO, NOTHING TO LOOK AT @Y30IPLB 34315003 TM DCBOFLGS-IHADCB(WKREG9),DCBOFOPN IS THE DCB OPEN 34318003 BZR LNKREG NO, SKIP IT @Y30IPLB 34321003 L WKREGB,DCBDEBAD-IHADCB(WKREG9) LOAD THE DEB PTR @ZA08736 34324003 L WKREG9,DEBRRQ-DEBBASIC(WKREGB) LOAD THE RRQ PTR @ZA08736 34326003 LA WKREG9,C0(WKREG9) ZERO THE HIGH BYTE 34330003 LTR WKREG9,WKREG9 IS THE POINTER ZERO 34333003 BZR LNKREG NO, GET AN RRQ @Y30IPLB 34336003 EJECT 34339003 * AN RRQ ADDRESS WAS FOUND IN A DEB, NEED TO VALIDATE DEB. @ZA08736 34339203 CLI RQEPRT,SYSTMKEY SYSTEM REQUEST (KEYS 0-7)? @ZA08736 34339403 BNH XCP039D YES, BYPASS DEB VAL CK @ZA08736 34339603 SPACE 34339803 * SETUP LINKAGE TO DEB VALIDITY CHECK SUBROUTINE @ZA08736 34340003 L WKREGA,RQETCB PLACE TCB IN PARM REG @ZA08736 34340203 LR WKREG6,RQEREG SAVE RQE ADDRESS @ZA08736 34340403 LR RQEREG,WKREGB PLACE DEB IN PARM REG @ZA08736 34340603 L APBSRG,ADEBCHK LOAD ADDR TO DEB CHK RTN @ZA08736 34340803 BALR LNKREG,APBSRG LINK TO DEB CHK ROUTINE @ZA08736 34341003 B XCP039C NORMAL RETURN, CONTINUE @ZA08736 34341203 B XCP013 INVALID DEB, ABEND REQUEST @ZA08736 34341403 SPACE 34341603 XCP039C EQU * @ZA08736 34341703 LR RQEREG,WKREG6 RESTORE RQE POINTER @ZA08736 34341803 SPACE 2 34341903 XCP039D STCM WKREG9,LORD3BYT,DEBECBB STORE RRQ AS THIS ONE @ZA08736 34342003 SPACE 2 34345003 XCP040 L WKREG6,RRQLAST LOAD ADDRESS OF LAST RQE ON CHN 34400021 LA WKREG6,C0(WKREG6) CLEAR HI ORDER BYTE @YM1138 34402002 CR WKREG9,WKREG6 IS THIS A POINTER TO BEGINNING 34410002 BE XCP039A YES, STORE RQE AS FIRST 34420002 ST RQEREG,RQENRQE-RQE(WKREG6) STORE THIS RQE AD AS CHN 34450021 XCP045 ST RQEREG,RRQLAST STORE THIS RQE AS LAST ON CHN 34500021 ST WKREG6,FRRPRQE STORE PRVS RQE IN FRR WORK AREA 34550021 SLR WKREGA,WKREGA ZERO A REG IN PREPARATION @Y30IPLB 34600003 BCTR WKREGA,REG0 MAKE REG ALL F'S AS END OF CH 34650021 ST WKREGA,RQENRQE STORE AS END OF CHAIN 34700021 ST WKREG9,RQERRQ SAVE RRQ ADDRESS IN RQE 34750021 TITLE ' IECVEXCP -- EXCP PROCESSOR -- RELATED REQUEST CHECK' 34800002 *********************************************************************** 34850021 * * 34900021 * THIS SECTION CHECK THE REQUEST TO SEE WHERE IT IS ON THE * 34950021 * RELATED REQUEST QUEUE IF RELATED AND TO SEE IF IT * 35000021 * CAN BE STARTED. * 35050021 * * 35100021 *********************************************************************** 35150021 TM DCBIFLGS,DCBIFEC PERM ERROR IN LAST REQUEST 35200021 BO XCP046A YES, SET THIS AS PURGED 35250002 C RQEREG,RRQFIRST RQE AT TOP OF QUEUE 35300021 BE XCP050 YES, CONTINUE PROCESSING 35350021 TM RQETYPE-RQE(WKREG6),RQETYP2 IS PREV RQE TYPE 2 OR 3 35400021 BZ XCPEXIT NO, IT IS TYPE 1, COMPLETE @YM03482 35450002 SLR APBSRG,APBSRG ZERO A COUNT REGISTER @Y30IPLB 35500003 L WKREGB,RRQFIRST LOAD POINTER TO FIRST ON QUEUE 35550021 XCP046 CR RQEREG,WKREGB THIS THE PRESENT RQE 35600021 BE XCP047 YES, CHECK COUNT 35650021 TM RQETYPE-RQE(WKREGB),RQETYP2 IS THIS ONE TYPE 2 OR 3 35700021 BZ XCPEXIT NO, TYPE 1, CANNOT GO FURTHER 35750021 TM RQETYPE-RQE(WKREGB),RQEEOEE END OF EXTENT @YM04681 35760002 * ERROR TO BE PURGED? @YM04681 35770002 BO XCPEXIT YES, GO TEST FOR EXIT @YM04681 35780002 SPACE 35790002 LA APBSRG,C1(APBSRG) INCREMENT COUNT BY 1 35800021 L WKREGB,RQENRQE-RQE(WKREGB) LOAD NEXT RQE POINTER 35850021 B XCP046 LOOP BACK TO LOOK FOR THIS ONE 35900021 SPACE 2 35950021 XCP046A MVI IOBECBCC,ECBPURG SET PURGE CODE IN IOB 35960002 L WKREGA,DEBAPPAD LOAD POINTER TO AVT 35970002 USING DEBAVT,WKREGA 35980002 L APBSRG,DEBXCEA LOAD POINTER TO ABNORMAL END 35990002 DROP WKREGA 35992002 B XCP203 EXECUTE ABNORMAL END APPENDAGE 35994002 SPACE 1 35994402 XCP046B L TERMBAS,XCPBASE2 POST AND FREE ROUTINE BASE @ZA07510 35996003 USING XCPTERM,TERMBAS ADDRESSABILITY TO TERM RTN 35996402 L REG13,FRRLLSA RESTORE SAVE AREA ADDRESS @YM1480 35996802 B XCP508 ENTER TERMINATION ROUTINE @YM03482 35998002 SPACE 2 35998402 XCP047 LA REG0,C4 LOAD MAX VALUE IN REGISTER 36000021 CR APBSRG,REG0 ENOUGH TRANSLATED YET 36050021 BL XCP050 NO, CONTINUE PROCESSING 36150021 TITLE ' IECVEXCP -- EXCP PROCESSOR -- EXIT ROUTINE' 36350002 *********************************************************************** 36400021 * * 36450021 * THIS SECTION CHECKS THE PLACE ENTERED TO SEE IF ANY REQUESTS * 36500021 * CAN BE CONTINUED. IF YES, IT CHECKS TO SEE IF THERE ARE ANY * 36550021 * TO CONTINUE. AGAIN, IF YES, THE REQUEST IS TAKEN THROUGH * 36600021 * TRANSLATION BUT NOT STARTED. THIS LOOP IS CONTINUED UNTIL NO * 36650021 * MORE REQUESTS EXIST OR THE MAXIMUM OF FOUR IS REACHED. * 36700021 * * 36750021 * IF NO, OR AT THE END OF THE TRANSLATION LOOP DESCRIBED ABOVE,* 36800021 * RESOURCES ARE FREED, THE LOCAL LOCK IS RELEASED IF OBTAINED, * 36850021 * THE RETURN ADDRESS IS SAVED AND THE FRR IS DELETED. * 36900021 * * 36950021 *********************************************************************** 37000021 SPACE 2 37050021 XCPEXIT TM FRRFLAG,FRRBKE IS THIS BACK END ENTRANCE 37150002 BZ XCPEXITB NO, DO NOT TRY TO TRANSLATE @Y30IPLB 37200003 CLI FRRCRQE,FF HAS TCB BEEN STORED IN RQE @ZA12711 37220003 BE XCPEXITA FREE ROUTINE; IF YES BYPASS @ZA12711 37240003 MVC FRRCRQE(C4),RQETCB YES, SAVE TCB ADDR-SRB MODE @YM06742 37270002 MVI FRRCRQE,FF INSURE NEGATIVE NO. FOR FRR @YM06742 37340002 * @ZA02391 37370003 XCPEXITA EQU * @ZA12711 37390003 TM FRRWORK,FRRUNREL IS THIS A RELATED REQUEST? @ZA15704 37400003 BO XCPEXITB NO, DONOT TRY TO XLATE ANY @Y30IPLB 37450003 ST RQEREG,FRRPRQE STORE RQEREG AS PREVIOUS RQE 37460002 L WKREGB,DEBRRQ LOAD A POINTER TO THE RRQ 37470002 TM DCBIFLGS,DCBIFEC PERMANENT ERROR IN LAST REQUEST 37500021 BZ XCPEXITK NO, CK FOR RRQ RQE XLATION @ZA12712 37520003 SPACE 2 39200021 XCPEXITB L RQEREG,FRRSTRG LOAD POINTER TO BLOCK CHAIN @Y30IPLB 39250003 LTR RQEREG,RQEREG IS IT ZERO 39300021 BZ XCPEXITC YES, CONTINUE EXIT @Y30IPLB 39350003 L WKREGB,GET160 SPECIFY 160 BYTE BLOCK 39400021 L APBSRG,ACOREMGT LOAD POINTER TO CORE MANAGER 39450021 BAL LNKREG,C4(APBSRG) GO FREE THE BLOCKS IN THE CHAIN 39500021 SPACE 39520003 XCPEXITC EQU * * @Y30IPLB 39550003 TM FRRFLAG,FRRBKE BACK END ENTRANCE 39560002 BZ XCPEXITE NO, SKIP FREE OF LOCAL LOCK @Y30IPLB 39600003 SPACE 39600203 TM FRRWORK,FRRPTERM BACK END ENTERED AT XCPTERMA@YM30169 39600403 BO XCPEXITD YES, THEN REL LOCAL LOCK @YM30169 39600603 SPACE 39601003 LM WKREG6,WKREG7,C64(REG13) GET IECVPST BASE AND @Y30IPLC 39611003 * FRR REGISTERS @Y30IPLC 39621003 LR REG4,WKREG6 RESTORE IECVPST FRR REG. @Y30IPLC 39631003 L WKREG6,FRRRETR RESTORE RETURN ADDRESS @Y30IPLC 39641003 LA WKREG6,C16(WKREG6) POST STATUS RETURN VECTOR @Y30IPLC 39651003 B XCPEXITJ DELETE THE FRR. @Y30IPLC 39661003 SPACE 39671003 XCPEXITD LR WKREG6,FRRREG SAVE FRR REGISTER @YM30169 39681003 SETLOCK RELEASE,TYPE=LOCAL, X39691003 RELATED=(ADDRSPC,IECVEXCP(XCPTERMA)) 39701003 LR FRRREG,WKREG6 RESTORE FRR REGISTER @YM30169 39711003 SPACE 39740003 XCPEXITE L WKREG6,FRRRETR LOAD RETURN ADDRESS @Y30IPLB 39850003 LR RQEREG,IOBREG RESTORE IOB TO REG 1 39900021 TM FRRFLAG,FRREXPR EXPR ENTRY FOR PURGE/TERM ? @ZA12704 39905003 BOR WKREG6 YES, RETURN TO IECVEXPR @ZA12704 39910003 XCPEXITJ SETFRR D,WRKREGS=(WKREGA,WKREGB) DLETE FRR FROM CHAIN @Y30IPLC 39950003 LR BASREG,WKREG7 RESTORE IECVPST BASE REG. @Y30IPLC 39970003 BR WKREG6 RETURN TO CALLER 40000021 EJECT @ZA12712 40001003 ************************************************************** @ZA12712 40003003 ** ENTRY TO CHECK FOR RELATED REQUEST RQE TRANSLATION UP TO * @ZA12712 40005003 ** A STARTABLE STATE FOR TYPE 2 AND 3 REQUESTS * @ZA12712 40007003 ************************************************************** @ZA12712 40009003 SPACE 1 @ZA12712 40011003 XCPEXITK EQU * @ZA12712 40013003 TM FRRTCNT,FRRXLTA RETURN FROM RQE XLATION ?? @ZA12712 40015003 BZ XCPEXITM NO, GO DO 1ST TIME HDLING @ZA12712 40017003 TM RQEFLAG,RQESTBL WAS RQE XLATED TO STARTABLE @ZA12712 40019003 BZ XCPEXITB CONDITION; IF ZERO, EXIT. @ZA12712 40021003 B XCPEXITP YES, CONTINUE @ZA12712 40023003 XCPEXITM EQU * @ZA12712 40025003 L RQEREG,RRQFIRST-RRQ(WKREGB) LD 1ST RQE ON RRQ @ZA12712 40027003 XCPEXITN LTR RQEREG,RQEREG END OF RQE CHAIN (ALL F'S)? @ZA12712 40029003 BM XCPEXITB YES, CLEAN UP AND EXIT @ZA12712 40031003 XCPEXITP EQU * @ZA12712 40033003 TM RQETYPE,RQETYP2 REL RQE TYPE 2 OR 3 ?? @ZA12712 40035003 BZ XCPEXITB NO, TYPE 1, EXIT. @ZA12712 40037003 TM RQEFLAG,RQESTBL IS RQE STARTABLE ?? @ZA12712 40038003 BZ XCPEXITR NO, NEEDS TO BE XLATED @ZA12712 40041003 ST RQEREG,FRRPRQE STORE RQE AS PREVIOUS RQE @ZA12712 40043003 TM FRRTCNT,FRRXLT MAXIMUM COUNT REACHED ?? @ZA12712 40045003 BO XCPEXITB BOTH BITS ON; YES, EXIT @ZA12712 40047003 IC WKREGB,FRRTCNT NO, LOAD XLATE COUNTER @ZA12712 40049003 AL WKREGB,GETRQE INCR COUNT BY ONE @ZA12712 40051003 STC WKREGB,FRRTCNT STORE UPDATED COUNT @ZA12712 40053003 L RQEREG,RQENRQE LOAD NEXT RQE ON RRQ @ZA12712 40055003 B XCPEXITN LOOP BACK TO CK RQE @ZA12712 40057003 SPACE 1 @ZA12712 40059003 XCPEXITR EQU * @ZA12712 40061003 TM RQETYPE,RQEEOEE PURGE END OF EXTENT ERROR? @YM04681 40086503 BO XCPEXITB YES, CLEAN UP AND EXIT @YM04681 40087003 ST RQEREG,FRRCRQE NO, STORE AS CURRENT RQE @ZA12712 40087503 BAL LNKREG,XCPENVL LOAD ENVIRONMENTAL REGS @YM05304 40088003 * FROM RQE: IOB,DEB,DCB,UCB @YM05304 40088503 OI FRRTCNT,FRRXLTA SET RQE HDLING FLAG @ZA12712 40089003 TITLE ' IECVEXCP -- EXCP PROCESSOR -- GET SRB AND INITIALIZE' 40090003 *********************************************************************** 40100021 * * 40150021 * GET AN SRB AND A TCCW. STORAGE MANAGEMENT ROUTINE OF IOS IS * 40200021 * USED TO DO THIS. EACH OF THE BLOCKS IS INITIALIZED TO THE * 40250021 * POINT OF ITS BEING USED LATER. * 40300021 * * 40350021 *********************************************************************** 40400021 SPACE 2 40450021 XCP050 EQU * 40500003 LA WKREGB,C2 NUMBER OF BLOCKS TO GET 40650021 TM RQETYPE,RQEVIRT VIRTUAL REQUEST 40700021 BZ XCP055 NO, LEAVE NUMBER OF BLOCKS TO 2 40750021 LA WKREGB,C4 SET NUMBER OF BLOCKS TO 4 40800021 XCP055 SLR WKREGA,WKREGA ZERO A WORK REG @Y30IPLB 40820003 EX WKREGB,XCPCMPR NO. BLOCKS AVAIL GE TO REQ? @Y30IPLB 40850003 BL XCP060 NO,GO TO STORAGE MANAGER 40900021 IC WKREGA,FRRFCNT GET THE COUNT IN REG 41000021 SLR WKREGA,WKREGB DECREMENT NO AVAILABLE @Y30IPLB 41050003 STC WKREGA,FRRFCNT STORE NEW NUMBER AVAILABLE 41100021 LR WKREG6,WKREGB PLACE COUNT IN DIFFERENT PLACE 41150021 L WKREGB,FRRSTRG LOAD POINTER TO FIRST BLOCK 41200021 LR WKREGA,WKREGB PLACE POINTER INTO SECOND REG 41250021 XCP058 EQU * @ZA13838 41270003 LR WKREG9,WKREGA SAVE LAST 160 B BLOCK PTR @ZA13838 41300003 L WKREGA,C0(WKREGA) LOAD NEXT 160 B BLOCK ADDR @ZA13838 41310003 BCT WKREG6,XCP058 FIND NUMBER BLOCKS NEEDED 41350021 ST WKREGA,FRRSTRG STORE NEW BLOCK POINTER 41400021 ST WKREG6,C0(WKREG9) ZERO LAST 160 B CHAIN PTR @ZA13838 41405003 L WKREG6,PSAAOLD GET ASCB POINTER @YM02863 41410002 USING ASCB,WKREG6 ESTABLISH ADDRESSABILITY @YM02863 41420002 LH WKREG6,ASCBASID GET THE ADDR SPACE ID @YM02863 41430002 B XCP065 BRANCH TO FILL IN BLOCKS 41450021 SPACE 2 41500021 XCP060 SLL WKREGB,C28 SHIFT NUMBER TO HIGHEST NIBBLE 41550021 L WKREG6,PSAAOLD GET POINTER TO ASCB 41600003 LH WKREGA,ASCBASID LOAD ASID FROM ASCB @YM30183 41650003 LR WKREG6,WKREGA SAVE ASID IN WKREG6 UNTIL @YM30183 41700003 * INITIAL. OF IOSB ASID FIELD 41710003 SLL WKREGA,C8 THEN POSITION IN CENTER BYT @YM30183 41830003 OR WKREGB,WKREGA OR THE TWO REGS SO HAVE NO-ASID 41900021 IC WKREGB,GET160+C3 160 TYPE, HAVE NO-ASID-TYPE 41950021 L APBSRG,ACOREMGT GET ADDRESS OF STORAGE MANAGEMENT 42000021 BALR LNKREG,APBSRG GO GET BLOCKS 42050021 XCP065 ST WKREGB,RQESRB STORE ADDRESS OF SRB IN RQE 42100021 USING SRBSECT,WKREGB ADDRESSABILITY TO SRB 42150021 LA IOSBRG,SRBSIZE(WKREGB) LOAD POINTER TO IOSB 42200021 LR WKREG9,WKREGB ESTABLISH BASE FOR NOW 42250021 L WKREGB,C0(WKREGB) GET POINTER TO NEXT BLOCK 42300021 XC C0(A0,WKREG9),C0(WKREG9) ZERO THE ENTIRE FIELD-SRB/IOSB 42350002 L WKREGA,RQETCB LOAD POINTER TO TCB 42400021 DROP WKREGB NO LONGER NEED ADDRESSABILITY 42450021 USING SRBSECT,WKREG9 ADDRESSABILITY FOR SRB 42500021 ST IOSBRG,SRBPARM POINT SRB TO IOSB 42550021 ST WKREGA,SRBPTCB STORE POINTER TO TCB IN SRB 42600021 DROP WKREG9 END ADDRESSABILITY 42650021 ST WKREGB,RQETCCW STORE ADDRESS OF TCCW 42700021 USING TCCW,WKREGB ADDRESSABILITY TO TCCW @YM05514 42710002 MVI TCCWMODB,XCPX00 ZERO OUT TRANSLATION FLAGS @YM05514 42720002 TM RQETYPE,RQEVIRT IS IT A VIRTUAL REQUEST 42750021 BZ XCP068 NO, INITIALIZE IOSB @ED00054 42800003 L WKREGA,C0(WKREGB) LOAD POINTER TO NEXT BLOCK (BEB) 42850002 ST WKREGA,TCCWBEB POINT TO BEB IN TCCW 42950021 L WKREGA,C0(WKREGA) LOAD POINTER TO LAST BLOCK(FIX LIST) 43000002 ST WKREGA,TCCWFIX POINT TO FIX LIST IN TCCW 43050021 USING IOSB,IOSBRG ADDRESSABILITY TO IOSB 43100021 * CHECK FOR CC/3 PROCESS. @ZD00054 43120003 XCP068 TM IOBFLAG4,IOBCC3WE DOES REQUESTOR WANT CC3 @ZD00054 43140003 BNO XCP070 PROCESSING TO BE SEEN? @ZD00054 43160003 OI IOSFLC,IOSCC3WE YES, MAP TO IOSB @ZD00054 43180003 XCP070 MVI IOSDVRID,IOSXCPID SET DRIVER ID TO EXCP 43200002 STH WKREG6,IOSASID STORE ASID IN IOSB 43750002 L WKREG6,XCPTRMAD GET ADDR OF TERM ROUTINE @ZA08736 43800003 ST WKREG6,IOSPGAD STORE FOR POST STATUS RETURN@YM30169 43850003 MVC IOSCKEY,RQEPRT PRTCK KEY FOR CHANNEL PROGRAM 43900021 ST UCBREG,IOSUCB STORE UCB ADDRESS IN IOSB 43950021 ST RQEREG,IOSUSE STORE ADDRESS OF RQE IN IOSB 44000021 LA WKREGA,XCPCHE GET ADDRESS OF CHE APPENDAGE 44050021 * ROUTINE COMPATABILITY CODE 44100021 ST WKREGA,IOSNRM STORE AS NORMAL APPENDAGE 44150021 LA WKREGA,XCPABE GET ADDRESS OF ABE APPENDAGE 44200021 * ROUTINE COMPATABILITY CODE 44250021 ST WKREGA,IOSABN STORE AS ABNORMAL APPENDAGE 44300021 ST DEBREG,IOSDSID STORE DEB AS DATA SET ID 44350021 IC WKREG6,IOBFLAG1 LOAD FLAGS FROM IOB 44360002 N WKREG6,FLAGMASK REMOVE NON COMPATABLE FLAGS 44370002 EX WKREG6,XCPFLGOR SET THE FLAGS IN IOSB 44380002 TM DCBIFLGS,DCBIFIOE USE IBM ERPS 44390002 BZ XCP071 YES, BYPASS THE SET 44392002 OI IOSOPT,IOSNERP NO, BYPASS IBM ERPS 44394002 *** *** 44394602 * IOSDIE INITIALIZED WITH XCPDIE IF TYPE 3 RELATED REQUEST OR* 44395203 * A NON-VIRTUAL EXCP REQUEST (EXCPVR OR 1 TO 1) WITH A VALID * 44395802 * PCI APPENDAGE. * 44396402 * * 44397002 * IOSPCI INITIALIZED WITH XCPPCI IF A VIRTUAL REQUEST WITH A * 44397602 * VALID PCI APPENDAGE. * 44398202 *** *** 44398802 XCP071 EQU * INITIALIZE FOR DIE AND PCI 44400002 SLR WKREGA,WKREGA ZERO REGISTER @Y30IPLB 44450003 L WKREG6,DEBAPPAD LOAD APPENDAGE ADDRESS 44500002 USING DEBAVT,WKREG6 ADDRESSABILITY TO AVT 44550002 L WKREG6,DEBPCIA GET PCI APPENDAGE ADDRESS 44558002 TM RQETYPE,RQETYP3 TYPE 3 RELATED REQUEST 44566002 BO XCP080 BRANCH YES, NEEDS DIE 44574002 TM RQETYPE,RQEVIRT IS THIS A VIRTUAL REQUEST 44582002 BO XCP081 YES, STORE CONTENTS OF WKREGA 44590002 CLC C0(C2,WKREG6),BR14 IS IT A BR 14 45000002 BE XCP081 YES,NO DIE NEEDED 45050002 XCP080 L WKREGA,XCPENDIE GET ADDRESS OF DIE ROUTINE @ZA12705 45060003 XCP081 ST WKREGA,IOSDIE STORE DIE ADDRESS IN IOSB 45100002 SLR WKREGA,WKREGA ZERO REGISTER @Y30IPLB 45150003 TM RQETYPE,RQEVIRT VIRTUAL REQUEST 45200021 BZ XCP085 NO, SKIP PCI APPENDAGE 45250021 CLC C0(C2,WKREG6),BR14 IS IT A BR 14 45450021 BE XCP085 YES, ZERO RETURN FOR PCI 45500021 L WKREGA,XCPENPCI GET PCI COMPATIBILITY CODE @ZA12705 45520003 XCP085 ST WKREGA,IOSPCI STORE IN IOSB 45600021 DROP WKREG6 45620002 TITLE 'IECVEXCP -- EXCP PROCESSOR -- PAGE FIX APPENDAGE INTERFX45650002 ACE' 45700021 *********************************************************************** 45750021 * * 45800021 * PAGE FIX APPENDAGE INTERFACE - THIS IS ONLY VALID FOR EXCPVR.* 45850021 * A DUMMY LIST IS SET FOR THE VIRTUAL USER. IF THE APPENDAGE * 45900021 * IS ENTERED AND AT EXIT, THE REQUESTOR IS EXCPVR, EXCP * 45950021 * GOES TO FIX AND FIXES THE PAGES IN THE LIST PASSED. * 46000021 * * 46050021 *********************************************************************** 46100021 SPACE 2 46150021 L WKREGA,DEBAPPAD GET APPENDAGE VECTOR TABLE @Y30IPLB 46200003 USING DEBAVT,WKREGA ADDRESSABILITY TO THAT SECTION 46250021 TM RQETYPE,RQE1TO1 IS THIS A 1 TO 1 REQUEST @YM05929 46260002 BO XCP100 YES, DO NOT ENTER PG FIX APP@YM05920 46270002 TM DEBSIOAB,DEBPGFX IS THERE A PAGE FIX APPENDAGE 46300021 BZ XCP105 NO, CONTINUE PROCESSING 46350021 L APBSRG,DEBSIOA LOAD THE PAGE FIX APP ADR 46500021 DROP WKREGA DROP AVT ADDRESSABILITY 46510002 L WKREGA,RQETCCW LOAD POINTER TO TCCW 46550021 LA WKREGA,TCCWSAVE-TCCW(WKREGA) FIX LIST AREA IF V=VYM01039 46560002 SLR WKREG9,WKREG9 ZERO REG 9 FOR APPENDAGE @Y30IPLB 46610003 OI FRRFLAG,FRRPGFX+FRRAACT SET PAGE FIX APP EXEC @YM05506 46650002 *** 46700002 * PAGE FIX APPENDAGE INTERFACE DEFINITION - *** 46708002 * RQEREG - RQE, IOBREG - IOB, DEBREG - DEB, DCBREG - DCB, * 46716002 * UCBREG - UCB, LNKREG - RETURN, APBSRG - PGFX RTN ADDR, * 46724002 * REGS 10,11,AND 13 AS WORKREGISTERS * 46732002 *** *** 46740002 BAL LNKREG,C4(APBSRG) EXECUTE THE PAGE FIX APPENDAGE 46750021 B XCP088 REG 14 + 0 RETURN YM01039 46760002 * B XCP088 REG 14 + 4 RETURN YM01039 46770002 XCP088 EQU * YM01039 46780002 L REG13,FRRLLSA LOAD POINTER TO L L SAVE AREA 46790002 NI FRRFLAG,FF-FRRPGFX-FRRAACT RESET PAGE FIX EXEC @YM05506 46850002 TM RQETYPE,RQE114 IS THIS AN EXCPVR REQUEST 46900021 BZ XCP105 NO, SKIP PAGE FIX LOGIC 46950021 SPACE 47000002 L TERMBAS,XCPFIXAD GET @ PAGEFIX INTERFACE SRTN@YM05929 47040002 B C0(TERMBAS) FIX PAGES SPECIFIED IN LIST @YM05929 47080002 SPACE 47120002 USING DEBAVT,WKREGA ESTABLISH DEB ADDRESSABILITY@YM05929 47160002 XCP100 EQU * @YM05929 47200002 TM DEBSIOAB,DEBFIX IS DEB ALREADY FIXED? @YM05929 47250002 BO XCP105 YES, THEN BYPASS FIX @YM05929 47300002 L TERMBAS,XCPFIXAD GET ADDRESS OF FIX RTN @YM05929 47350002 B C4(TERMBAS) GO TO FIX THE DEB @YM05929 47400002 SPACE 47450002 DROP WKREGA 47500002 TITLE ' IECVEXCP -- EXCP PROCESSOR -- EXTENT TEST SET UP' 48900002 *********************************************************************** 48950021 * * 49000021 * THIS SECTION SETS UP IOSEEK AND IOSEEKA FROM IOBSEEK FIELD * 49050021 * AND THEN EXECUTES THE EXTENT CHECK SUBROUTINE. * 49100021 * NOTE: THIS IS THE RETURN POINT FROM THE BACK END ON * 49110003 * AN APPENDAGE REQUESTED RETRY LOGIC PATH. * 49120003 * * 49150021 *********************************************************************** 49200021 SPACE 2 49250021 XCP105 NI RQEFLAG,FF-RQERETRY-RQENOPST ZERO RETRY FLAG YM3829P 49274003 XC IOSSNS(C2),IOSSNS ZERO OUT SENSE IN CASE OF @YM07886 49280002 * RE-EXCP(COMPATIBILITY VS2-1) 49290002 TM UCBTBYT3,UCB3DACC IS THIS A DIRECT ACCESS DEVICE 49300002 BZ XCP110 NO, NO EXTENT CHECK USED 49350021 MVC IOSEEK,IOBSEEK MOVE SEEK FIELD TO IOSB FROM IOB 49400021 MVC IOSEEKA,IOSEEK SET UP SEEK FIELD USED TO DO SEEK 49450021 BAL LNKREG,XCPEXT CHECK THE EXTENT FOR DA 49500021 * NOTE THAT THE BAL INSTRUCTN @ZA07510 49507003 * CAUSES THE HIGH ORDER BIT @ZA07510 49514003 * TO BE SET ON IN LNKREG. @ZA07510 49521003 * THIS BIT IS USED IN XCPEXT @ZA07510 49528003 * TO DETERMINE CALLER. (HIGH @ZA07510 49535003 * ORDER 2 BITS IS INST LENGTH)@ZA07510 49542003 LTR APBSRG,APBSRG EXTENT WITHIN BOUNDS 49550021 BZ XCP110 YES CONTINUE YM1250 49600002 SPACE 49603002 XCP105A EQU * @YM05527 49606002 L WKREGA,DEBAPPAD LOAD POINTER TO AVT YM1250 49610002 USING DEBAVT,WKREGA YM1250 49620002 L APBSRG,DEBXCEA LOAD POINTER TO ABNORMAL END YM1250 49630002 DROP WKREGA YM1250 49640002 TM RQEFLAG,RQEPURGE IGNORE RETURN FROM EOE APPNDG@YM1398 49640402 BO XCP046B BRANCH YES - TERMINATE @YM1398 49640802 L REG13,FRRLLSA GET PTR TO LOCAL LK SVAREA @YM04681 49642002 OI FRRFLAG,FRRABE SET ABNORMAL END APPEN FLG @YM05506 49643002 TM RQETYPE,RQERRTYP IS THIS A RELATED REQUEST?? @ZA15704 49643203 BZ XCP202A NO, GET SAVE AREA PTR @ZA15704 49643503 SPACE 49644502 L WKREG9,DEBRRQ GET PTR TO RRQ @YM04681 49645002 C RQEREG,RRQFIRST-RRQ(WKREG9) RQE AT TOP OF Q? @YM04681 49646002 BE XCP203AA YES, GO TEST RELATED REQ @YM04681 49648002 SPACE 49653002 OI RQETYPE,RQEEOEE SET FLG, END-OF EXTENT ERR @YM04681 49658002 * TO BE PURGED @YM04681 49663002 B XCPEXIT GO TEST WHICH EXIT @YM04681 49668002 * NOTE** AT THIS POINT WE ARE @YM04681 49668802 * CURRENTLY SUSPENDING PROCESSING 49669602 * WITH AN END-OF-EXTENT ERROR, TO BE 49670402 * PURGED AND RESUMPTION OF PROCESSING 49671202 * OCCURRS WHEN THE CURRENT RQE HAS 49672002 * THE RQEEOEE ON. 49673002 SPACE 5 49683002 TITLE ' IECVEXCP -- EXCP PROCESSOR -- SIO APPENDAGE INTF' 49723002 *********************************************************************** 49733002 * 49750021 * SIO APPENDAGE INTERFACE -- THIS ROUTINE EXECUTES THE SIO * 49800021 * APPENDAGE AND CONTINUES PROCESSING ACCORDING TO THE EXITS * 49850021 * FROM IT. * 49900021 * REGISTERS PASSED ON ENTRY ARE RQEREG,IOBREG,DEBREG,DCBREG * 49950021 * UCBREG, SAVREG, LNKREG AND APBSRG. REGISTERS THAT MAY BE * 50000021 * DESTROYED ARE WKREG6, WKREG9,WKREGA,WKREGB,SAVREG. * 50050021 * RETURNS ARE REGISTER 14 PLUS 0- NORMAL, 4- RETURN RQE AND * 50100021 * 8- NORMAL * 50150021 * * 50200021 *********************************************************************** 50250021 SPACE 2 50300021 XCP110 EQU * @YM05506 50500002 L REG13,FRRLLSA GET SAVE AREA ADDRESS @YM05144 50530002 SLR WKREG9,WKREG9 ZERO REG 9 FOR APPENDAGE @Y30IPLB 50560003 LA WKREG6,IOSEEKA SET ADDRESS TO SEEK FIELD 50600021 L APBSRG,DEBAPPAD GET APPENDAGE ADDRESS 50650021 USING DEBAVT,APBSRG ADDRESSABILITY TO AVT 50700021 L APBSRG,DEBSIOA GET SIO APPENDAGE ADDRESS 50750021 OI FRRFLAG,FRRSIO+FRRAACT SET SIO APPENDAGE EXEC @YM05506 50770002 BALR LNKREG,APBSRG GO TO SIO APPENDAGE 50800021 B XCP115 NORMAL EXIT CONTINUE 50850021 B XCP113 RETURN RQE 50900002 B XCP115 FORMER SIO EXTEND RETURN 50950002 SPACE 2 51000021 XCP113 L TERMBAS,XCPBASE2 LOAD TERMINATION RTN BASE @ZA07510 51010003 USING XCPTERM,TERMBAS TEMPORARY ADDRESSABILITY 51012002 NI FRRFLAG,FF-FRRSIO-FRRAACT RESET SIO APPEND. EXEC@YM05506 51014002 L REG13,FRRLLSA GET SAVE AREA FOR TERMINATION@YM1386 51016002 B XCP515 RETURN RQE 51020002 TITLE ' IECVEXCP -- EXCP PROCESSOR -- TRANSLATOR INTERFACE' 51050002 *********************************************************************** 51100021 * * 51150021 * CCW TRANSLATOR INTERFACE - CORE IS GOTTEN FOR THE FIX LIST * 51200021 * AND THE BEB. THE TCCW IS INITIALIZED AND EXCP BRANCHES TO THE* 51250021 * TRANSLATOR WITH REGISTER 1 POINTING TO THE TCCW. * 51300021 * THERE ARE FOUR RETURNS FROM THE TRANSLATOR, THREE OF WHICH * 51350021 * ARE VALID FOR TRANSLATION. THEY ARE 0- TRANSLATION COMPLETE, * 51400021 * 4- TRANSLATION ERROR AND BLOCKS MUST BE FREED, AND C- NEED * 51450021 * MORE CORE. * 51500021 * * 51550021 *********************************************************************** 51600021 SPACE 2 51650021 XCP115 L WKREGB,RQETCCW GET POINTER TO TCCW 51700021 NI FRRFLAG,FF-FRRSIO-FRRAACT RESET SIO APPEND. EXEC@YM05506 51800002 SLR WKREGA,WKREGA ZERO A REGISTER @Y30IPLB 51810003 TM UCBTBYT3,UCB3DACC IS THIS A DA DEVICE YMXXXX 51850002 BZ XCP117 NO, DO NOT CALCULATE EXTENT @Y30IPLB 51860003 IC WKREGA,IOBM GET EXTENT INDEX YMXXXX 51870002 IC WKREG9,DEBEXSCL GET EXTENT SIZE YMXXXX 51880002 SLL WKREGA,C0(WKREG9) MULTIPLY BY SIZE YMXXXX 51890002 XCP117 LA WKREGA,DEBBASND(WKREGA) POINT TO EXTENT @Y30IPLB 51892003 USING DEBDASD,WKREGA ADDRESSABILITY TO SNGL EXTNT YMXXXX 51894002 MVC IOSFMSK,DEBDVMOD SET FILE MASK IN IOSB YMXXXX 51896002 L WKREG6,IOBSTART GET POINTER TO CCWS 51898002 TM RQETYPE,RQEVIRT IS THIS A VIRTUAL REQUEST 51900021 BNO XCP145 NO, EXCPVR OR 1 TO 1 DONT TRANSLATE 51950021 OI RQEFLAG,RQEFIXST FIXING IS STD, FREEING NDED @YM1621 51960002 MVC TCCWTCB,RQETCB PLACE TCB INTO TCCW 52000021 ST UCBREG,TCCWUCB-C1 STORE UCB INTO TCCW 52050021 MVI TCCWOPTN,TCCWXLAT SET FLAG TO TRANSLATE CCWS 52100021 ST WKREG6,TCCWFVC STORE AS FIRST VIRTUAL CCW 52200021 LR WKREGA,RQEREG SAVE ADDRESS OF RQE 52250021 LR REG1,WKREGB PLACE TCCW IN PARM REG 52300021 XCP120 L APBSRG,ACCWXLAT GET ADDRESS OF CCW TRANSLATOR 52400021 BALR LNKREG,APBSRG TRANSLATE CCWS 52450021 B XCP125(APBSRG) BRANCH ACCORDING TO RETURN CODE 52500021 SPACE 2 52550021 XCP125 B XCP140 NORMAL, STORE REAL CCW ADDRESSES 52600021 B XCP135 ERROR, SET UP ERROR CODE,FREE BLOCKS 52650021 B XCP135 SHOULD NOT HAPPEN HERE 52700021 * B XCP130 GET MORE CORE RETURN 52750021 SPACE 2 52800021 * REQUEST FROM TCCW FOR A 160 B BLOCK @ZA12709 52804003 XCP130 EQU * @ZA12709 52807003 L WKREGB,FRRSTRG 160B BLOCK FREE CHAIN PTR @ZA12709 52810003 LTR WKREGB,WKREGB ANY BLOCKS ON FREE CHAIN ?? @ZA12709 52813003 BZ XCP131 NO, INTERFACE WITH SMGR @ZA12709 52816003 L APBSRG,C0(WKREGB) YES, REMOVE 1 160B BLOCK @ZA12709 52819003 ST APBSRG,FRRSTRG UPDATE FREE CHAIN PTR @ZA12709 52822003 IC APBSRG,FRRFCNT UPDATE FREE BLOCKS COUNT @ZA12709 52825003 BCTR APBSRG,C0 DECREMENT BY ONE @ZA12709 52828003 STC APBSRG,FRRFCNT STORE UPDATED COUNT @ZA12709 52831003 LR REG0,WKREGB PLACE 160 B BLOCK IN REG 0 @ZA12709 52834003 B XCP120 RETURN TO TRANSLATOR @ZA12709 52837003 XCP131 EQU * @ZA12709 52840003 LH WKREGB,IOSASID LOAD ASID FROM IOSB @ZA12709 52843003 SLL WKREGB,C8 CENTER ASID @YA03213 52852003 O WKREGB,GET160 GET ONE 160 BYTE BLOCK @YA03213 52872003 L REG13,FRRLLSA LOAD ADDRESS OF LOCAL LOCK SAVE AREA 52900021 L APBSRG,ACOREMGT GET ADDRESS OF STORAGE MGMT 52950021 BALR LNKREG,APBSRG GET ANOTHER BLOCK 53000021 LR REG0,WKREGB PLACE BLOCK IN REG 0 53050021 B XCP120 GO BACK TO TRANSLATOR 53100021 SPACE 2 53150021 XCP135 EQU * @YM07354 53160002 NI RQEFLAG-RQE(WKREGA),FF-RQEFIXST RESET THE @Y30IPLB 53200003 * FIX STARTED FLAG 53220003 B ABENDSET SET ABEND CODE AND ABEND @YM05929 53250002 * THE TASK 53300002 SPACE 2 53400021 XCP140 ST REG0,IOSRST STORE ADDRESS OF REAL STRING 53450021 LR WKREGB,RQEREG LOAD BASE FOR TCCW 53500021 MVC IOSVST,TCCWFRC STORE VIRTUAL ADDR OF REAL STRING 53550021 LR RQEREG,WKREGA RESTORE RQE ADDRESS 53600021 B XCP150 SCHEDULE SRB IF CAN 53650021 TITLE ' IECVEXCP -- EXCP PROCESSOR -- STARTIO ROUTINE' 53700002 *********************************************************************** 53750021 * * 53800021 * THIS ROUTINE CHECKS TO SEE IF THE REQUEST MAY BE SENT TO THE * 53850021 * CHANNEL SCHEDULER. IF IT CAN THE STARTIO MACRO IS ISSUED * 53900002 * AND THE CORRECT EXIT IS TAKEN. * 53950021 * * 54000021 *********************************************************************** 54050021 SPACE 2 54100021 XCP145 ST WKREG6,IOSVST STORE ADDRESS IN IOSB 54200002 TM RQETYPE,RQE1TO1 IS THIS A VIRTUAL=REAL REQUEST 54250021 BO XCP148 YES DO NOT DO LOAD REAL ADDRESS 54300021 LRA WKREG6,C0(WKREG6) GET REAL ADDRESS OF CCW STRING 54350002 XCP148 ST WKREG6,IOSRST STORE IN IOSB 54400002 SPACE 2 54450021 XCP150 OI RQEFLAG,RQESTBL MARK RQE AS STARTABLE 54500021 TM RQETYPE,RQERRTYP IS THIS REQUEST RELATED 54650002 BZ XCP155 NO, START REQUEST 54700021 L WKREGB,DEBRRQ POINT TO THE RELATED REQUEST QUEUE 54720002 USING RRQ,WKREGB ADDRESSABILITY TO RRQ 54750021 L WKREGB,RRQFIRST GET FIRST RQE IN QUEUE 54800021 DROP WKREGB DROP ADDRESSABILITY ON REG 11 54850021 CR RQEREG,WKREGB IS THIS THE CURRENT RQE 54900021 BNE XCPEXIT NO, CANNOT START NEXT ONE @YM03482 54950002 SPACE 2 55200021 XCP155 L REG13,FRRLLSA FIND THE LOCAL LOCK SAVE AREA 55250021 OI RQEFLAG,RQESRBS SET THE REQUEST STARTED 55260002 STM REG1,FRRREG,C0(REG13) SAVE REGS ACROSS STARTIO 55300021 L REG1,RQESRB LOAD POINTER TO SRB 55350021 STARTIO SRB=(1),TCB=SRB ISSUE STARTIO 55400021 LM REG1,FRRREG,C0(REG13) RESTORE REGS 55450021 MVI RQEFLAG3,RQEINIOS SET REQUEST IN IOS @ZM32371 55470003 B XCPEXIT FINISHED THE RQE 55500021 TITLE ' IECVEXCP -- EXCP PROCESSOR -- CHE/ABE APPENDAGE INTFC' 55530003 *********************************************************************** 62100021 * * 62150021 * CHANNEL END - ABNORMAL END APPENDAGE INTERFACE -- THE IOSB * 62200021 * IS MAPPED TO THE IOB AND THE APPENDAGE IS ENTERED. ACCORDING * 62250021 * TO THE RETURN CODE, THE FOLLOWING WORK IS DONE -- * 62300021 * +0 - MAP BACK TO IOSB THE FLAG1,START, CSW, EXTENT, AND * 62350021 * CHECK THE EXTENT. * 62400021 * +4 - RESET IOSEX, SET FLAG TO SKIP POST * 62450021 * +8 - RESET IOSEX, SET RE-EXCP FLAG FOR TERMINATION ROUTINE * 62500021 * +C - RESET IOSEX, SET SKIP POST, SKIP FREE * 62550021 * RETURN IS TO POST STATUS PLUS ZERO. * 62600021 * * 62650021 *********************************************************************** 62700021 SPACE 2 62750021 USING XCPABE,APBSRG ADDRESSABILITY TO BEGINNING SEGMT 62800021 XCPABE STM REG0,APBSRG,C0(REG13) SAVE REGISTERS FOR POST STATUS 62850021 LA IOBREG,FRRABE SET TO ABNORMAL END ENTRY 62900002 LR IOSBRG,REG1 PLACE IOSB IN ITS BASE REGISTER 62950021 L DEBREG,IOSDSID LOAD THE DEB ADDRESS 63000021 L WKREG6,DEBAPPAD LOAD THE APPENDAGE VECTOR TABLE AD 63050021 USING DEBAVT,WKREG6 ADDRESSABILITY TO AVT 63100021 L WKREGA,DEBXCEA LOAD POINTER TO ABNORMAL APPENDAGE 63150021 L RQEREG,IOSUSE LOAD ADDRESS OF RQE @YM1398 63160002 L WKREG6,RQEIOB GET IOB ADDRESS FOR TEST @Y02DPLB 63161003 DROP IOBREG @YM30404 63161503 USING IOBSTDRD,WKREG6 TEMPORARY ADDRESSABILITY @Z300134 63162003 TM IOBFLAG4,IOBJES3I ORIGINAL CALLER JES3? @Y02DPLB 63163003 BNO XCP180 BYPASS IOSB SETTING @Y02DPLB 63164003 OI IOSPKEY,IOSPGDPX SET INDICATOR DUPLEXED PAGE @Y02DPLB 63165003 USING IOBSTDRD,IOBREG RE-ESTABLISH ADDRESSABILITY @Z300134 63166003 SPACE 63167003 XCP180 EQU * @Y02DPLB 63168003 TM RQEFLAG,RQEPURGE IS APPENDAGE TO BE BYPASSED @YM1398 63170002 * * RQEPURGE SET BY END OF EXT @YM1398 63180002 * * ON +4 RETURN FROM EOE APPEN@YM1398 63190002 * * INDICATING IGNORE-POST ONLY@YM1398 63192002 BZ XCP200 GO TO COMMON APPENDAGE CODE 63200002 LA WKREGA,XCP220 FORCE APPENDAGE BYPASS @YM1398 63210002 NI IOSFLA,FF-IOSEX RESET EXCEPTION FLAG @YM1398 63220002 B XCP200 ENTER COMMON CODE @YM1398 63230002 SPACE 2 63250021 USING XCPCHE,APBSRG ADDRESSABILITY TO BEGINNING SEGMT 63300021 XCPCHE STM REG0,APBSRG,C0(REG13) SAVE REGISTERS FOR POST STATUS 63350021 LA IOBREG,FRRCHE SET TO CHANNEL END ENTRY 63400021 LR IOSBRG,REG1 PLACE IOSB IN ITS BASE REGISTER 63450021 L DEBREG,IOSDSID LOAD THE DEB ADDRESS 63500021 L WKREG6,DEBAPPAD GET THE ADDRESS OF THE AVT 63550021 USING DEBAVT,WKREG6 REESTABLISH AVT ADDRESSABILITY 63570003 L WKREGA,DEBCEA LOAD POINTER TO CHANNEL END APPNDG 63600021 SPACE 2 63650021 XCP200 BALR BASREG,REG0 ESTABLISH BASE FOR APPENDAGE 63700021 * PROCESSING 63750021 USING XCP201,BASREG ADDRESSABILITY FOR THIS SECTION 63800021 XCP201 S BASREG,ENDSDISP POINT TO BEGINNING OF MODULE 63850021 USING XCPBASE,BASREG ADDRESSABILITY FROM BEGINNING 63900021 DROP APBSRG DROP TEMPORARY 63950021 LR WKREGB,LNKREG SAVE RETURN ADDRESS. @Y30IPLC 63970003 BAL LNKREG,SETFRR ESTABLISH FRR FOR APPENDAGE 64000021 ST WKREGB,FRRRETR SAVE RETURN ADDRESS IN FRR @Y30IPLC 64020003 ST REG13,FRRLLSA STORE SAVE AREA FOR LATER 64050003 STC IOBREG,FRRFLAG STORE WHICH APPENDAGE BIT 64100021 L RQEREG,IOSUSE LOAD ADDRESS OF RQE 64150021 MVI RQEFLAG3,RQECLEAR RESET REQUEST BACK FROM @ZM32371 64160003 * IOS @ZM32371 64170003 ST RQEREG,FRRCRQE STORE RQE POINTER IN FRR 64200021 BAL LNKREG,XCPENVL LOAD ENVIRONMENTAL REGISTERS 64250021 CLI RQEPRT,SYSTMKEY IS THIS SYSTEM RQE 64300002 BNH XCP202 YES, SKIP VALIDITY CHECK 64350021 BAL LNKREG,XCPVAL VALIDITY CHECK CONTROL BLOCKS 64400021 XCP202 LA REG0,C1 SET NOT DIE FLAG 64450002 BAL LNKREG,XCPMAP MAP IOSB TO IOB 64500021 LR APBSRG,WKREGA LOAD APPENDAGE POINTER 64550021 XCP202A EQU * @YM06220 64570002 L WKREG6,RQETCCW LOCATE THE TCCW @YM05527 64600002 LA REG13,TCCWSAVE-TCCW(WKREG6) SAVE AREA 64650021 XCP203 TM FRRFLAG,FRRABE ABNORMAL END APPENDAGE REQ @YM1141 64700002 BZ XCP203A NO, CHANNEL END,SKIP PRG @YM1141 64700402 TM IOSCOD,PERM PERM ERROR YET @YM1141 64700802 BO XCP203A NO, FIRST TIME IN @YM1141 64701202 L WKREGA,IOSERP LOAD ERP WORKAREA ADDRESS @ZA16147 64701403 XCP203AA TM RQETYPE,RQETYP3 RELATED REQUEST? @YM04681 64701602 BNZ XCPPUR YES, PURGE REL REQUESTS @YM1141 64701702 XCP203A MVC FRRPRQE,RQENRQE SAVE CHAIN ACROSS APPENDAGE @YM1094 64702002 LR WKREG6,FRRREG SAVE FRR ADDRESS @YM1094 64704002 SLR WKREG9,WKREG9 ZERO REG 9 FOR APPENDAGE @Y30IPLB 64710003 OI FRRFLAG,FRRAACT SET APPENDAGE IS ACTIVE FLG @YM05506 64710602 SPACE 64711202 *** THE CONDITION CODE MUST BE SET DEPICTING UNIT EXCEPTION AND WRONG 64712002 *** LENGTH RECORD FOR THE CHANNEL END APPENDAGE YMXXXXX 64714002 TM IOSFLA,IOSEX IF NORMAL APPENDAGE,IOSEX 64720002 * * IS SET ONLY FOR UEX OR WLR 64730002 BALR LNKREG,APBSRG GO EXECUTE THE APPENDAGE @Y30IPLB 64750003 SPACE 2 64800021 B XCP220 +0 - NORMAL 64850021 B XCP215 +4 - DONT POST @Y30IPLB 64900003 B XCP207 +8 - RE-EXCP @Y30IPLB 64930003 B XCP208 +C - DONT POST, DONT FREE @Y30IPLB 64960003 * B XCP205 +10 - RETRY FROM TOP OF RRQ @Y30IPLB 64990003 SPACE 2 65050021 XCP205 OI RQEFLAG,RQENOPST INDICATE RETRY FROM @Y30IPLB 65053003 * TOP OF RRQ BY SETTING NOPST YM3829P 65056003 * AND ALLOWING THE NEXT INST YM3829P 65059003 * TO SET RETRY THUS INDICATING YM3829P 65062003 * THE ACTION YM3829P 65065003 XCP207 OI RQEFLAG,RQERETRY SET RETRY FLAG FOR BACK END @Y30IPLB 65068003 NI IOSFLA,FF-IOSEX RESET EXCEPTION FLAG @YM05520 65071003 NI IOBFLAG1,FF-IOSEX RESET EXCEPTION FLAG @YM05520 65074003 NI FRRFLAG-FRREXCP(WKREG6),FF-FRRAACT RESET @ZA12704 65075003 * ABN/CEA APPEND ACT FLAG @ZA12704 65077003 SPACE 1 @ZA06067 65081003 ****** CHECK FOR SMF RECORDING *****************************@ZA06067 65084003 TM RQEPRT,RQESMFRQ SMF RECORDING REQUIRED ?? @ZA06067 65085003 BZ XCP207A NO, BYPASS RECORDING @ZA06067 65085203 SPACE 1 @ZA06067 65085403 L REG0,RQETCB LOAD ADDRESS OF THE TCB FOR SMF 65086003 L APBSRG,ASMFEX LOAD THE ADDRESS OF SMF ROUTINE 65089003 LR WKREG9,RQEREG SAVE RQE REG OVER INTERFACE @ZA05478 65090003 LA REG1,C1 PASS TO SMF A COUNT OF 1 @ZA05478 65091003 BALR LNKREG,APBSRG RECORD THE RE-EXCP YM1095 65092003 LR RQEREG,WKREG9 RESTORE RQE REG @ZA05478 65092503 XCP207A EQU * @ZA05478 65093003 LR FRRREG,WKREG6 RESTORE FRR WORK AREA ADDR YM1095 65095003 B XCP250 GO RESET IOSEX 65100003 SPACE 65103003 XCP208 OI RQEFLAG,RQENOFRE SET DONT FREE FLAG IN RQE @Y30IPLB 65106003 L REG0,FRRPRQE-FRREXCP(WKREG6) 65108003 * GET CHAIN PTR TO DEQUEUE RQE@ZA12704 65110003 TM RQETYPE,RQETYP3 TEST IF A RELATED REQUEST @YM1366 65130002 BZ XCP215 IF ZERO, REQUEST WAS NOT REL@Y30IPLB 65140003 L WKREGB,DEBRRQ LOAD POINTER TO DEB REL REQ Q YM1094 65141002 C RQEREG,RRQFIRST-RRQ(WKREGB) IS PRESENT RQE TOP YM1094 65142002 BNE XCP210 NO, SEARCH FOR PREVIOUS RQE @Y30IPLB 65144003 ST REG0,RRQFIRST-RRQ(WKREGB) YES, STORE NEXT AS TOP YM1094 65146002 LR WKREGA,WKREGB SET TOP POINTER YM1094 65148002 B XCP213 GO CHECK FOR LAST IN QUEUE @Y30IPLB 65148403 SPACE 2 65148802 XCP210 L WKREGA,RRQFIRST-RRQ(WKREGB) LOAD POINTER TO 1ST @Y30IPLB 65149203 XCP211 L WKREG9,RQENRQE-RQE(WKREGA) GET CHAIN FROM RQE @Y30IPLB 65149403 CR RQEREG,WKREG9 IS THIS ONE POINTING TO CURNT YM1094 65149702 BE XCP212 YES, SET NEXT POINTER @Y30IPLB 65149803 LR WKREGA,WKREG9 SET POINTER TO NEXT RQE YM1094 65149902 B XCP211 SEARCH FOR CURRENT @Y30IPLB 65166603 SPACE 2 65176602 XCP212 ST REG0,RQENRQE-RQE(WKREGA) CHAIN NEXT TO PREVIOUS @Y30IPLB 65178603 XCP213 LTR REG0,REG0 END OF CHAIN @Y30IPLB 65179603 BNM XCP215 NO, DEQUEUE COMPLETE @Y30IPLB 65180603 ST WKREGA,RRQLAST-RRQ(WKREGB) STORE NEW END POINTER YM1094 65183002 SPACE 2 65183102 XCP215 OI RQEFLAG,RQENOPST SET DONT POST FLAG IN RQE @Y30IPLB 65183303 NI IOSFLA,FF-IOSEX RESET EXCEPTION FLAG @YM05520 65191303 LR FRRREG,WKREG6 RESTORE FRR POINTER 65200021 NI FRRFLAG,FF-FRRAACT RESET ABNORMAL OR CHANNEL @ZA06811 65210003 * END APPENDAGE ACTIVE 65220003 B XCP250 GO TEST MODE OF ENTRY @YM05506 65250002 SPACE 2 65300021 XCP220 LR FRRREG,WKREG6 RESTORE FRR WORK AREA ADDRESS 65700002 NI FRRFLAG,FF-FRRAACT RESET ABNORMAL OR CHANNEL @ZA06811 65703003 * END APPENDAGE ACTIVE 65705003 TM FRRFLAG,FRRFTE+FRRBKE FRONT OR BACK END ENTRY? @YM04681 65710002 BNZ XCP046B YES, THEN SET UP TO ENTER @YM05520 65715002 * THE TERMINATION ROUTINE @YM05520 65720002 TM IOBFLAG1,IOSEX IS THE EXCEPTION FLAG ON 65950021 BZ XCP245 NO, DO NOT NEED TO MAP @YM05520 66000002 NI IOSFLA,FF-IOSEX-IOSERR RESET EXCEPTION FLAGS YM1800 66008002 IC WKREG6,IOBFLAG1 GET THE IOB FLAGS AS SET BY APP 66016002 N WKREG6,FLAGMASK TURN OFF INCOMPATABLE FLAGS 66024002 EX WKREG6,XCPFLGOR SET FLAGS IN IOSB TO FLAGS IIN IOB 66032002 CLI UCBTBYT3,UCB3DACC IS THIS A DIRECT ACCESS @ZA17802 66036003 BNE XCP221 DEVICE... NO @ZA17802 66040003 MVC IOSEEK,IOBSEEK YES. MOVE SEEK FIELD TO IOSB@ZA17802 66042003 XCP221 EQU * @ZA17802 66044003 CLI IOBECBCC,ECBMACH PERMANENT ERROR 66050021 BNL XCP222 NO, MUST MAP BACK 66100021 TM RQETYPE,RQERRTYP IS THIS A RELATED REQUEST?? @ZA15704 66105003 BZ XCP222 NO, THEN BYPASS SETTING @ZA15704 66110003 * ANY PERM. ERROR INDICATOR IN DCB 66130002 OI DCBIFLGS,DCBIFEC SET DCB PERMANENT ERROR 66150021 CLI UCBTBYT3,UCB3UREC UNIT RECORD DEVICE 66200021 BNE XCP235 NO, EXIT @Y30IPLC 66250003 * HERE IS WHERE SET PERM ERR IN ALL 3525 DCBS 66300021 CLI UCBTBYT4,UCB3525 IS THIS A 3525 66350021 BNE XCP235 NO, NOTHING SPECIAL NEEDED @Y30IPLC 66400003 TM DCBMACF1,DCBMRECP IS ACCESS METHOD EXCP? @ZA25344 66410003 BO XCP235 YES @ZA25344 66420003 TM DCBQSWS,DCBASSOC ASSOCIATED DATA SETS 66450021 BZ XCP235 NO, SKIP SPECIAL PROCESSING @Y30IPLC 66500003 SPACE 66550003 L WKREG6,DEBRDCB TEST FOR A READ DATASET @Y30IPLB 66600003 BAL WKREGB,XCP223 TEST SETTING OF DCBIFLG @Y30IPLB 66650003 L WKREG6,DEBPDCB TEST FOR A PUNCH DATASET @Y30IPLB 66700003 BAL WKREGB,XCP223 TEST SETTING OF DCBIFLG @Y30IPLB 66750003 L WKREG6,DEBWDCB TEST FOR A WRITE DATASET @Y30IPLB 66800003 BAL WKREGB,XCP223 TEST SETTING OF DCBIFLG @Y30IPLB 66850003 XCP222 MVC IOSTATUS(C4),IOBCSW+C3 MAP STATUS & RESID.COUNT @YM05538 67150002 MVC IOSSNS(C2),IOBSENS0 RESTORE IOSB SENSE YM3833 67170002 L WKREG6,IOBSTART GET START OF CHANNEL PROGRAM 67200002 TM RQETYPE,RQEVIRT IS THIS A VIRTUAL REQUEST 67250021 BO XCP225 YES, MAP THROUGH TRANSLATE ROUTINE 67300021 ST WKREG6,IOSVST STORE VIRTUAL START 67350021 LRA WKREG6,C0(WKREG6) GET REAL ADDRESS OF REAL START 67400021 ST WKREG6,IOSRST STORE AS REAL START 67450021 MVC IOSCSWCA,IOBCSW MOVE ADDRESS TO IOSB 67500021 B XCP235 RETURN TO POST STATUS @Y30IPLC 67550003 SPACE 67556003 XCP223 EQU * @Y30IPLB 67562003 LTR WKREG6,WKREG6 DATASET SPECIFIED ZERO? @Y30IPLB 67568003 BZR WKREGB YES, GET NEXT DCB IF ONE @Y30IPLB 67574003 OI DCBIFLGS-IHADCB(WKREG6),DCBIFEC SET PERMANENT @Y30IPLB 67580003 * ERROR INDICATOR 67586003 BR WKREGB RETURN TO MAINLINE PATH @Y30IPLB 67592003 SPACE 2 67600021 XCP225 EQU * * 67650002 L WKREGB,RQETCCW LOAD POINTER TO TRANSLATION BLKS 67700021 USING TCCW,WKREGB ADDRESSABILITY TO TCCW 67750021 LR REG0,WKREG6 PLACE ADDRESS TO BE MAPPED IN R0 67900021 LR REG1,WKREGB PLACE TCCW ADDRESS IN REG1 67950021 MVI TCCWOPTN,TCCWSATR SET SINGLE ADDRESS TRANSLATION 68000021 L APBSRG,ACCWXLAT LOAD ADDRESS OF TRANSLATOR 68050021 BALR LNKREG,APBSRG GO TRANSLATE THE ADDRESS 68100021 LTR APBSRG,APBSRG TEST FOR A FIND 68150021 BNZ XCP230 NON ZERO SKIP STORE 68200021 ST REG0,IOSVST STORE NEW VIRTUAL ADDRESS 68250021 LR APBSRG,REG0 PLACE ADDRESS OF CCW IN DIFFRNT REG 68300021 LRA APBSRG,C0(APBSRG) GET THE REAL ADDRESS OF THE CCW 68350021 ST APBSRG,IOSRST STORE IN THE IOSB 68400021 SPACE 2 68450021 XCP230 L APBSRG,ACCWXLAT GET ADDRESS OF TRANSLATOR 68500021 MVI TCCWOPTN,TCCWSATR SET SINGLE ADDRESS TRANSLATION 68510002 L REG0,IOBCSW-C1 GET ADDRESS FROM CSW 68550021 BCTR REG0,0 SUBTRACT ONE FROM CSW ADDR 68560002 BALR LNKREG,APBSRG TRANSLATE THAT ADDRESS 68600021 LA APBSRG,C1 SET INCREMENT TO ONE 68610002 ALR REG0,APBSRG ADD ONE TO CSW ADDRESS @Y30IPLB 68620003 STCM REG0,LORD3BYT,IOSCSWCA STORE IT INTO THE CSW IN IOSB 68650021 SPACE 2 68700021 L RQEREG,FRRCRQE LOAD THE RQE POINTER 68750021 XCP235 TM IOSCOD,PERM FIRST TIME IN. @Y30IPLC 68800003 BO XCP255 YES, RETURN TO POST STATUS. @Y30IPLC 68820003 B XCP252 SET UP FOR TERMINATION @Y30IPLC 68840003 SPACE 68880002 XCP245 NI IOSFLA,FF-IOSEX-IOSERR RESET EXCEPTION FLAGS @YM05520 68920002 SPACE 2 69050021 XCP250 EQU * * 69052002 TM FRRFLAG,FRRFTE+FRRBKE FRONT OR BACK END ENTRY? YM1250 69060002 BM XCP046B YES, RETURN TO FRONT END @YM1147 69070002 SPACE 69075003 DROP TERMBAS NEEDED FOR NEXT INSTRUCTION @Y30IPLC 69080003 SPACE 69085003 XCP252 L TERMBAS,XCPBASE2 SET UP ADDRESSABILITY FOR @ZA07510 69090003 USING XCPTERM,TERMBAS TERMINATION PROCESSING. @Y30IPLC 69110003 L REG13,FRRLLSA RESTORE SAVE AREA ADDRESS. @Y30IPLC 69130003 LM WKREGA,WKREGB,C16(REG13) SAVE IECVPST BASE AND @Y30IPLC 69140003 STM WKREGA,WKREGB,C64(REG13) FRR WORK AREA REGS IN @Y30IPLC 69150003 * UNUSED PART OF SAVE AREA. @Y30IPLC 69160003 B XCPTERM EXECUTE TERMINATION PROCESS @Y30IPLC 69170003 SPACE 2 69200021 XCP255 L REG13,FRRLLSA LOAD SAVE AREA ADDRESS 69250003 SETFRR D,WRKREGS=(WKREGA,WKREGB) DELETE FRR 69300003 LM REG0,APBSRG,C0(REG13) RESTORE REGISTERS 69350021 BR LNKREG RETURN TO POST STATUS 69400021 TITLE 'IECVEXCP -- EXCP PROCESSOR -- RELATED REQUEST PURGE ROUX69410002 TINE' 69420002 *** THIS ROUTINE IS ENTERED FROM THE ABNORMAL END APPENDAGE INTERFACE 69430002 *** ROUTINE ON THE PREVIOUS PAGE TO PURGE RELATED REQUESTS TO THE 69440002 *** CURRENT REQUEST WHICH IS CONSIDERED A PERMANENT ERROR 69442002 XCPPUR OI FRRWORK,FRRRRP SET PURGE INDICATOR SO @YM30169 69446003 * TERM RTN WILL RETURN HERE @YM1141 69448002 OI DCBIFLGS,DCBIFEC SET PERMA.ERROR FLG IN DCB @YM03482 69448202 LR UCBREG,APBSRG SAVE ADDRESS OF APPENDAGE IN @YM1141 69448402 * RELATED REQUEST PURGE @YM1141 69448802 DROP TERMBAS INSURE CORRECT REG USAGE @YM1141 69448902 XCP260 L TERMBAS,XCPBASE2 SET TERM RTN ENTRY POINT @ZA07510 69449203 USING XCPTERM,TERMBAS ADDRESSABILITY TO ROUTINE @YM1141 69449602 SPACE 1 69451603 L WKREG6,DEBRRQ LOAD PTR TO DEB REL REQ QUEUE@YM3074 69457802 L RQEREG,RRQFIRST-RRQ(WKREG6) GET FIRST RQE @YM1141 69461802 LA RQEREG,C0(RQEREG) THERE IS AT LEAST THE @YM1141 69466602 * CURRENT RQE ON THE QUEUE @YM1141 69476602 SPACE 1 69477603 XCP265 L RQEREG,RQENRQE YES, LOAD PTR TO NEXT RQE @YM1141 69479002 LTR RQEREG,RQEREG END OF RQE CHAIN @YM1141 69480602 BM XCP280 YES, RESTORE ABNORMAL END @ZA30947 69481603 * ENVIRONMENT @YM1141 69483002 TM RQEFLAG,RQESRBS HAS THE SRB BEEN SCHEDULED @YM1141 69483102 BNZ XCP265 LOOK AT THIS RQE @YM1141 69490802 SPACE 69492803 SLR REG0,REG0 INDICAT NO IPIB @Y30IPLB 69493203 ************************************************************** @ZA16350 69493603 * L APBSRG,ARCHN GET ADDR OF RESTORE CHAIN * @ZA16350 69494603 * BUILD ROUTINE * @ZA16350 69495603 * BALR LNKREG,APBSRG PLACE IOB ON RESTORE CHAIN* @ZA16350 69496603 ************************************************************** @ZA16350 69497603 BC 0,0(0,0) REPLACE ABOVE DELETED @ZA16350 69498603 BCR 0,REG0 INSTRUCTIONS WITH NOP INST. @ZA16350 69499603 LM IOBREG,DEBREG,RQEIOB LOAD IOB AND DEB REGS @YM1141 69500603 MVI IOBECBCC,ECBPURG SET PURGED ECB CODE @YM1141 69501603 NI RQEFLAG,FF-RQERETRY-RQENOPST-RQENOFRE INSURE @YM1141 69508202 * WORK GETS DONE @YM1141 69518202 B XCP510 POST ECB, FREE STORAGE @YM1141 69520202 SPACE 1 69520403 XCP280 EQU * @ZA30947 69520803 LR APBSRG,UCBREG RESTORE APPENDAGE ADDRESS @ZA30947 69523803 L RQEREG,FRRCRQE RESTORE CURRENT RQE ADDRESS @YM1141 69531102 BAL LNKREG,XCPENVL LOAD ENVIRONMENTAL REGS @YM1141 69531202 L IOSBRG,RQESRB RESTORE IOSBREG BY LOADING @YM1141 69531302 L IOSBRG,SRBPARM-SRB(IOSBRG) OUT OF SRB @YM1141 69531402 NI FRRWORK,FF-FRRRRP RESET PURGE INDICATOR @YM30169 69533403 B XCP203A RETURN TO APPENDAGE PROCESS @YM1141 69536002 TITLE 'IECVEXCP -- EXCP PROCESSOR -- MAP IOSB TO IOB SUBROUTN' 69540802 *********************************************************************** 69545402 * * 69550021 * MAP TO IOSB SUBROUTINE -- THIS SUBROUTINE MAPS THE IOSFLA * 69600002 * TO IOBFLAG1, IOSCSW TO IOBCSW, IOSSNS TO IOBSENS0, IOSCOD TO * 69650002 * IOBECBCC EXCEPT FOR NON-COMPATABLE CODES WHICH ARE MAPPED * 69700002 * TO PERMANENT ERROR, IOSCC IS MAPPED TO IOBSIOCC. DCBPER IS * 69750002 * SET FOR RELATED REQUESTS WITH A POST CODE OF 41. * 69800002 * * 69850021 *********************************************************************** 69900021 SPACE 2 69950021 XCPMAP IC WKREG6,IOSFLA GET THE FLAGS FROM THE IOSB 70000021 N WKREG6,FLAGMASK REMOVE ALL NON-COMPATABLE FLAGS 70050021 NI IOBFLAG1,FF-IOSEX-IOSERR TURN OFF LIKE FLAGS 70100021 EX WKREG6,XCPIOBOR SET THE FLAGS IN THE IOB THE SAME 70150021 SPACE 2 70200021 MVC IOBCSW,IOSCSW MOVE THE CSW TO THE IOB 70250021 LTR REG0,REG0 IS MAP FROM THE DIE 70300021 BNZ XCPMAPB NO, SKIP TRANSLATE-VIRTUAL @Y30IPLB 70350003 L WKREG6,RQETCCW LOAD POINTER TO TCCW FIELD 70400021 STM LNKREG,IOBREG,TCCWRGSV-TCCW(WKREG6) SAVE REGS 70450021 * ACROSS CONVERT REAL TO VIRTUAL 70500021 L RQEREG,IOBCSW-C1 LOAD POINTER TO CCW 70550021 LA RQEREG,C0(RQEREG) ZERO THE HIGH BYTE 70600021 LTR RQEREG,RQEREG IS THE POINTER ZERO 70650021 BZ XCPMAPA YES, SKIP THE CONVERT @Y30IPLB 70700003 BCTR RQEREG,C0 SUBTRACT ONE FOR PAGING 70750021 L APBSRG,CVTPTR LOAD POINTER TO CVT 70800021 L APBSRG,CVTPTRV-CVT(APBSRG) LOAD CONVERT RTN 70850021 BALR LNKREG,APBSRG EXIT TO CONVERT ROUTINE 70900021 LTR APBSRG,APBSRG CONVERSION SUCCESSFUL? @ZA05191 70910003 BNZ XCPMAPA NO, BYPASS STORING ADDRESS @ZA05191 70920003 SPACE 70930003 LA RQEREG,C1(RQEREG) INCREMENT TO CORRECT ADDR 70950021 STCM RQEREG,LORD3BYT,IOBCSW STORE VIRTUAL ADDR BACK 71000021 SPACE 71020003 XCPMAPA LM LNKREG,IOBREG,TCCWRGSV-TCCW(WKREG6) RESTORE REGS@Y30IPLB 71050003 SPACE 71070003 XCPMAPB TM RQETYPE,RQEVIRT IS THIS A VIRTUAL REQUEST @Y30IPLB 71100003 BZ XCPMAPC NO, SKIP CSW TRANSLATE @Y30IPLB 71150003 L REG0,IOBCSW-C1 GET THE ADDRESS OF THE INTERRUPT 71200021 LR WKREG6,RQEREG SAVE THE RQE ADDRESS 71250021 L REG1,RQETCCW PLACE THE TCCW IN PARM REG 71300021 LR WKREGB,LNKREG SAVE REG 14 71350021 MVI TCCWOPTN-TCCW(REG1),TCCWCSWX SET TRANSLATE CSW OPTION 71400021 L APBSRG,ACCWXLAT LOAD ADDRESS OF TRANSLATOR 71450021 BALR LNKREG,APBSRG TRANSLATE THE CSW 71500021 LR LNKREG,WKREGB RESTORE RETURN ADDRESS 71550021 LR RQEREG,WKREG6 RESTORE THE RQE ADDRESS 71600021 LTR APBSRG,APBSRG TEST REG IF FOR ZERO 71650021 BNZ XCPMAPC ADDRESS NOT WITHIN REAL CCWS@Y30IPLB 71700003 STCM REG0,LORD3BYT,IOBCSW SAVE THE VIRTUAL ADDRESS IN IOB 71750021 SPACE 71800003 XCPMAPC MVC IOBSENS0(C2),IOSSNS PLACE SENSE IN IOB @Y30IPLB 71850003 MVC IOBSIOCC,IOSCC SET SIO CONDITION CODE IN IOB 71900021 CLI IOSCOD,IOSMIHC A CODE UNKNOWN TO USERS 71950002 BER LNKREG YES, DO NOT TOUCH @Y30IPLB 72000003 MVC IOBECBCC,IOSCOD SET COMPLETION CODE IN IOB 72050021 CLI IOBECBCC,IOSMIHCA IS THIS A NEW ERROR CODE 72100002 BNER LNKREG NO, RETURN @Y30IPLB 72150003 MVI IOBECBCC,ECBPERM SET PERMANENT ERROR 72200021 BR LNKREG RETURN TO APPENDAGE PROCESSOR 72250021 TITLE ' IECVEXCP -- EXCP PROCESSOR -- EXTENT CHECK SUBROUTINE' 72300002 *********************************************************************** 72350021 * * 72400021 * EXTENT CHECK SUBROUTINE -- CHECK TO SEE IF THE SEEK FIELD * 72450021 * IS WITHIN THE SPECIFIED EXTENT. IF NOT, THE END OF EXTENT * 72500021 * SUBROUTINE IS ENTERED WHICH DETERMINES WHAT TO DO. * 72550021 * FROM THE END OF EXTENT CHECK SUBROUTINE, THREE RETURNS * 72600021 * ARE SUPPORTED. THEY ARE: * 72650021 * +0 - SET TO EXTENT ERROR, DEQUEUE * 72700021 * +4 - POST THE REQUESTOR * 72750021 * +8 - CHECK AGAIN * 72800021 * RETURNS TO THE DA ERP ARE: * 72810002 * +0 - RETRY * 72820002 * +4 - POST THE REQUEST ( GO TO POST STATUS NO RETRY) * 72830002 * * 72850021 *********************************************************************** 72900021 SPACE 2 72950021 USING IECVEXTC,APBSRG ADDRESSABILITY TO BEGINNING 73000021 IECVEXTC L IOBREG,IOSUSE-IOSB(REG1) LOAD RQE POINTER 73050021 L DEBREG,RQETCCW-RQE(IOBREG) LOAD TCCW ADDRESS 73100021 STM DCBREG,LNKREG,TCCWCCWA-TCCW(DEBREG) SAVE REGS 4 - 14 73150021 LR BASREG,APBSRG ESTABLISH BASE REG 73200003 S BASREG,EXTDISP POINT TO BEGINNING OF MODULE 73250002 DROP APBSRG DROP TEMPORARY ADDRESSABILITY 73300021 LR IOSBRG,REG1 ESTABLISH PERMANENT IOSB REGISTER 73350021 BAL LNKREG,SETFRR ESTABLISH FRR 73400021 L RQEREG,IOSUSE LOAD POINTER TO RQE 73450021 ST RQEREG,FRRCRQE STORE AS CURRENT RQE 73500021 BAL LNKREG,XCPENVL LOAD ENVIRONMENTAL REGISTER 73550021 CLI RQEPRT,SYSTMKEY IS THIS SYSTEM RQE 73600002 BNH XCPEXTCK YES, SKIP VALIDITY CHECK @Y30IPLB 73650003 BAL LNKREG,XCPVAL VALIDITY CHECK CONTROL BLOCKS 73700021 SPACE 73720003 XCPEXTCK LA LNKREG,XCPEXTRT SET UP TO EXTENT CHECK THE @ZA07510 73750003 B XCPEXT SEEK ADDRESS. LA & B INSTR @ZA07510 73756003 XCPEXTRT EQU * USED SO HIGH ORDER BYTE OF @ZA07510 73762003 * LNKREG IS ZEROED. THE HIGH @ZA07510 73768003 * ORDER BIT IS USED IN XCPEXT @ZA07510 73774003 * TO DETERMINE CALLER. @ZA07510 73780003 SPACE 73786003 L WKREGB,RQETCCW LOAD TCCW ADDREES 73800021 SETFRR D,WRKREGS=(WKREG6,WKREGA) DELETE FRR 73850021 LR RQEREG,IOSBRG RESTORE PARAMETER REGISTER 73900021 LM DCBREG,LNKREG,TCCWCCWA-TCCW(WKREGB) LOAD REGISTERS 73950021 B C0(LNKREG,APBSRG) RETURN TO DA ERP 74000021 EJECT 74050021 XCPEXT SLR WKREGB,WKREGB ZERO A WORK REG @Y30IPLB 74100003 IC WKREGB,IOSEEKA PICK UP THE M FIELD 74150002 SLR WKREGA,WKREGA ZERO REG FOR INSERT @Y30IPLB 74200003 IC WKREGA,DEBEXSCL PICK UP EXTENT SCALE 74250021 SLL WKREGB,C0(WKREGA) MULTIPLY EXTENT NO BY SCALE 74300021 LA WKREGA,DEBBASND(WKREGB) POINT TO DEB EXTENT 74350021 USING DEBDASD,WKREGA ADDRESSABILITY TO EXTENT 74400021 SPACE 2 74450021 CLC IOSEEKA+C3(C4),DEBSTRCC SEEK ADDRESS LESS THAN LOW CCHH 74500021 BL XCPEXTA YES, GO TO END OF EXTENT APP@Y30IPLB 74550003 CLC IOSEEKA+C3(C4),DEBENDCC SEEK ADDRESS GREATER THAN HIGH 74600021 BH XCPEXTA YES, GO TO END OF EXTENT APP@Y30IPLB 74650003 SLR APBSRG,APBSRG ZERO IN CASE EXT TEST PASSED@Y30IPLB 74670003 CLC IOSEEKA+C1(C2),DEBBINUM BIN NUMBER THE SAME 74700021 BNE XCPEXTA NO, EXTENT ERROR @ZA07510 74900003 SPACE 74901003 TM DEBOFLGS,DEBSPLIT SPLIT CYLINDER DATA SET? @ZA07510 74902003 BNOR LNKREG NO, RETURN TO CALLER @ZA07510 74903003 SPACE 74904003 LTR LNKREG,LNKREG HIGH ORDER BIT OF LNKREG IS @ZA07510 74905003 BNM XCPEXTS3 USED TO DETERMINE CALLER. @ZA07510 74906003 * OFF = ENTERED THRU IECVEXTC @ZA07510 74907003 * FROM DA ERP. ON = OTHERWISE.@ZA07510 74908003 SPACE 2 74909003 * BELOW PERFORM SPLIT CYL OPERATIONS FOR NON-ERP ENTRY @ZA07510 74910003 CLC IOSEEKA+C5(C2),DEBENDHH SEEK GT DEB HIGH HH @ZA07510 74911003 BH XCPEXTS2 YES, SET IT TO DEB LOW HH @ZA07510 74912003 XCPEXTS1 CLC IOSEEKA+C5(C2),DEBSTRHH SEEK LT DEB LOW HH ? @ZA07510 74913003 BNLR LNKREG NO, THUS IS WITHIN SPLIT @ZA07510 74914003 XCPEXTS2 MVC IOSEEKA+C5(C2),DEBSTRHH SET SEEK TO LOW DEB HH @ZA07510 74915003 BR LNKREG RETURN TO CALLER @ZA07510 74916003 SPACE 74917003 XCPEXTS3 EQU * SPLIT CYL + FROM DA-ERP @ZA07510 74918003 CLC IOSEEKA+C5(C2),DEBENDHH SEEK GT DEB HIGH HH? @ZA07510 74919003 BNH XCPEXTS1 NO, GO CHECK FOR SEEK LOW @ZA07510 74920003 * WAS HIGH, UPDATE CYL + TRK @ZA07510 74921003 SLR WKREG6,WKREG6 ZERO A WORK REG @ZA07510 74922003 ICM WKREG6,LORD2BYT,IOSEEKA+C3 GET THE SEEKA CC @ZA07510 74922603 LA WKREG6,C1(WKREG6) ADD 1 TO THE SEEKA CC @ZA07510 74924003 STCM WKREG6,LORD2BYT,IOSEEKA+C3 PUT UPDATED SEEKA CC @ZA07510 74925003 B XCPEXTS2 NOW GO UPDATE TRACK (HH) @ZA07510 74926003 SPACE 2 74950021 XCPEXTA L WKREGB,RQETCCW POINT TO TCCW 75000003 USING TCCW,WKREGB ADDRESSABILITY TO TCCW 75050021 ST LNKREG,TCCWPLKR SAVE RETURN ADDRESS 75100003 LA REG13,TCCWRGSV-C8 POINT TO SAVE AREA 75150021 LTR LNKREG,LNKREG @ZA18819 75158003 BM XCPEXTA1 @ZA18819 75166003 LA REG0,C1 @ZA18819 75174003 BAL LNKREG,XCPMAP @ZA18819 75182003 XCPEXTA1 EQU * @ZA18819 75190003 LR REG0,FRRREG SAVE FRR REGISTER 75200002 L APBSRG,DEBAPPAD GET APPENDAGE POINTER 75300021 USING DEBAVT,APBSRG ADDRESSABILITY TO AVT 75350021 L APBSRG,DEBEOEA GET EOE APPENDAGE ADDRESS 75400002 LA WKREG6,IOSEEKA POINT TO UCB SEEK EQUIVALENT 75450021 SLR WKREG9,WKREG9 ZERO REG 9 FOR APPENDAGE @Y30IPLB 75460003 OI FRRFLAG,FRREOE+FRRAACT SET EOE APP. EXECUTING @YM05506 75480002 BALR LNKREG,APBSRG GO TO APPENDAGE 75500021 SPACE 2 75550021 B XCPEXTE EXTENT ERROR SET CODE @Y30IPLB 75600003 B XCPEXTC SKIP THIS OPERATION @Y30IPLB 75650003 * B XCPEXTB TRY EXTENT CHECK AGAIN @Y30IPLB 75700003 SPACE 2 75750021 XCPEXTB EQU * @Y30IPLB 75800003 SPACE 75850003 BAL WKREGA,XCPEXTG ENTER COMMON EXTENT CODE @Y30IPLB 75900003 B XCPEXT EXTENT CHECK AGAIN 76000021 SPACE 2 76050021 XCPEXTC EQU * @Y30IPLB 76100003 SPACE 76103003 BAL WKREGA,XCPEXTF ENTER COMMON EXTENT CODE @Y30IPLB 76106003 OI RQEFLAG,RQEPURGE INDICATE RQE TO BE FLUSHED @YM1398 76110002 * * WITHOUT FURTHER APPENDAGE @YM1398 76120002 * * PROCESSING @YM1398 76130002 SPACE 76200003 XCPEXTD EQU * @Y30IPLB 76230003 SPACE 76260003 NI IOSFLA,FF-IOSERR RESET ERROR ROUTINE IN CONTROL 76300003 NI IOBFLAG1,FF-IOSERR RESET ERROR ROUTINE IN CONTROL 76350002 LA APBSRG,C4 SET RETURN CODE FOUR 76400021 BR LNKREG RETURN TO CALLER 76450021 SPACE 76500003 XCPEXTE EQU * @Y30IPLB 76530003 SPACE 76560003 BAL WKREGA,XCPEXTF ENTER COMMON EXTENT CODE @Y30IPLB 76610003 MVI IOBECBCC,ECBEXTR SET EXTENT VIOLATION POST CODE 76750021 MVI IOSCOD,ECBEXTR SET EXTENT VIOLATION ERROR 76760002 B XCPEXTD RETURN TO CALLER 76800021 SPACE 76800203 XCPEXTF EQU * @Y30IPLB 76800403 SPACE 76800603 MVC IOSTATUS(C4),IOBCSW+C3 MOVE STATUS + RESIDUAL @ZA10549 76800703 * COUNT FIELDS BACK TO IOSB @ZA10549 76800803 SPACE 76801003 XCPEXTG EQU * @Y30IPLB 76801203 SPACE 76801403 LR FRRREG,REG0 LOAD FRR WK AREA ADDRESS @Y30IPLB 76802003 NI FRRFLAG,FF-FRREOE-FRRAACT RESET EOE APPEN. EXEC @Y30IPLB 76806003 L WKREGB,RQETCCW RESTORE TCCW ADDRESS @Y30IPLB 76810003 L LNKREG,TCCWPLKR RETORE RETURN ADDRESS @Y30IPLB 76811003 BR WKREGA RETURN TO EXTEXT MAIN PATH @Y30IPLB 76812003 TITLE 'IECVEXCP-- EXCP PROCESSOR -- MISCELLANEOUS SUBROUTINES' 76813003 *********************************************************************** 76813603 * * 76814203 * SET FRR ROUTINE, OBTAINS THE FRR WORK AREA AND ZEROS IT * 76815003 * MUST NOT USE REGISTER 0 - RESTRICTION DUE TO XCPTERM ** * 76817003 * * 76819003 *********************************************************************** 76821003 SPACE 3 76825003 SETFRR SETFRR A,FRRAD=XCPFRR,PARMAD=(FRRREG),WRKREGS=(FRRREG,DEBREG) 76830002 BR LNKREG RETURN TO MAIN LINE 76848402 EJECT 76848802 *********************************************************************** 76848903 * * 76849003 * ENVIRONMENTAL LOAD REGISTER ROUTINE. LOADS THE COMMON REGS * 76849203 * FOR EACH ROUTINE IN EXCP. * 76849403 * * 76849703 *********************************************************************** 76852703 SPACE 3 76855703 USING IOBSTDRD,IOBREG ADDRESSABILITY FOR IOB 76858703 USING DEBBASIC,DEBREG ADDRESSABILITY FOR DEB 76861703 XCPENVL LM IOBREG,DEBREG,RQEIOB LOAD IOB AND DEB REGISTER 76866602 L DCBREG,DEBDCBAD LOAD DEB REGISTER 76876602 L UCBREG,RQEUCB LOAD UCB REGISTERS 76878602 BR LNKREG RETURN TO MAIN LINE 76880602 EJECT 76882602 *********************************************************************** 76882703 * * 76882803 * COMMON VALIDITY CHECK FOR EACH ENTRY INTO EXCP. * 76883003 * * 76883103 *********************************************************************** 76888803 SPACE 3 76890803 IECVEXP1 EQU * START OF VALIDITY CHECK RTN @YM02855 76893803 SPACE 2 76898803 XCPVAL EQU * VALIDITY CHECK ROUTINE 76913803 MODESET SWAPKEY,KEYADDR=RQEPRT,WORKREG=15 SWAP TO USER KEY 76918803 XCPVALA NI IOBFLAG1,FF ACCESS THE IOB 76923803 NI C0(DCBREG),FF ACCESS THE DCB 76933803 L APBSRG,IOBECBPT LOAD ECB POINTER 76935803 NI C0(APBSRG),FF ACCESS THE ECB 76938803 MODESET EXTKEY=ZERO SWAP BACK TO SYSTEM KEY 0 @ZA11892 76950803 BR LNKREG RETURN TO MAIN LINE 76956803 SPACE 76962803 IECVEXP2 EQU * END OF VALIDITY CHECK RTN @YM02855 76968803 SPACE 2 76969603 EJECT 76974803 *********************************************************************** 76980803 * * 76986803 * ROUTINE WHICH INTERFACES WITH THE POST ROUTINE * 76998503 * * 76999503 *********************************************************************** 77000503 SPACE 3 77002003 XCPPOST EQU * POST ROUTINE INTERFACE 77004002 L WKREGB,IOBECBPT LOAD POINTER TO ECB 77006002 LA WKREGB,C0(WKREGB) ZERO THE HIGH BYTE 77008002 TM RQEPRT,PPKEY USER KEY 8-15 ?? @ZA11892 77008103 BZ XCPPOST1 NO, BYP VAL CK OF ECB @ZA11892 77008203 SPACE 1 @ZA11892 77008303 IECVEXP5 EQU * LIMIT CHECK FOR FRR @ZA11892 77008403 MODESET SWAPKEY,KEYADDR=RQEPRT,WORKREG=15 USERS KEY @ZA11892 77008503 NI C0(WKREGB),FF ACCESS ECB IN USERS KEY @ZA11892 77013303 MODESET EXTKEY=ZERO SWAP BACK TO SYSTEM KEY @ZA11892 77013603 IECVEXP6 EQU * @ZA11892 77014303 XCPPOST1 EQU * @ZA11892 77014403 IC WKREGA,IOBECBCC GET THE COMPLETION CODE 77014503 SLL WKREGA,C24 PLACE IN HIGH BYTE 77014603 L APBSRG,AOPT02 GET ADDR OF POST WITH VALCHK 77014703 *** *** 77015402 * POST INTERFACE DEFINITION - REGS 0-9.12,13 TRANSPARENT * 77017602 * REG 10 = COMPLETION CODE * 77018302 * REG 11 = ECB,REG 14 = RETURN * 77019002 * REG 15 = ENTRY POINT OF POST * 77019702 *** *** 77020402 BALR LNKREG,APBSRG GO TO POST 77021102 BR WKREG6 RETURN TO CALLER @ZA11892 77021503 EJECT 77022802 *********************************************************************** 77023303 * COMMON FREE RQE ROUTINE - ENTERED BY - * 77023803 * VAM (WINDOW INTERCEPT) INTERFACE RETURN * 77024603 * EXCP TERMINATION ROUTINE * 77025403 *********************************************************************** 77030203 SPACE 3 77031803 XCPFREE EQU * FREE RQE ROUTINE INTERFACE 77032802 C RQEREG,FRRCRQE FREEING CURRENT RQE ?? @ZA16415 77033103 BNE XCPFREEA NO @ZA16415 77033403 L WKREGA,RQETCB YES, SAVE TCB ADDR @ZA16415 77033703 ST WKREGA,FRRCRQE IN FRR FOR FRR ROUTINE @ZA16415 77034003 MVI FRRCRQE,FF INDICATE FIELD IS NOW TCB @ZA16415 77034303 XCPFREEA EQU * @ZA16415 77034603 L WKREGA,RQEIPIB LOAD POINTER TO IPIB IF ONE 77035302 LTR WKREGA,WKREGA IS THIS REQUEST UNDERGOING PURGE 77036202 BNZ XCPFREEB BRANCH YES, MUST DECREMENT COUNT 77038002 XCPFREEC EQU * RETURN FROM PURGE QUIESCE @ZA16415 77043003 ST WKREGA,C0(RQEREG) ZERO FIRST WORD OF RQE @ZA16415 77049703 ST WKREGA,RQENRQE ZERO NEXT RQE ON RRQ FIELD @ZA16415 77049803 LR WKREGA,LNKREG SAVE RETURN ADDRESS 77050102 L APBSRG,ACOREMGT GET ADDRESS OF STORAGE MANAGER 77050602 XCPFREED OI FRRTCNT,FRRF40 COVER SMGR FOR FREE RQE @YM08112 77061802 BAL LNKREG,XRQEFREE(APBSRG) RELEASE RQE 77063802 NI FRRTCNT,FF-FRRF40 TURN OFF SMGR COVER @YM07224 77065802 BR WKREGA RETURN VIA SAVED RETURN REG 77067802 EJECT 77071303 *** *** 77073802 * RQE UNDERGOING PURGE QUISCE - INTERFACE WITH QUIESCE COUNT * 77075802 * DECREMENT SUBROUTINE TO DECREMENT THE COUNT AND POST PURGE * 77077802 * (IGC0001F) IF COUNT GOES TO ZERO. * 77079802 *** *** 77080802 SPACE 1 77081802 XCPFREEB STM WKREG9,REG0,RQEIOB SAVE REGS 9-15 AND 0 IN RQE 77083802 LR WKREG9,RQEREG SAVE RQE 77085802 LR RQEREG,WKREGA IPIB ADDRESS TO REG 1 77087802 SLR REG0,REG0 INDICATE LOCAL LOCK HELD @Y30IPLB 77089803 L APBSRG,AQCNTDEC GET DECREMENT ROUTINE ADDR 77091802 *** *** 77092802 * DECREMENT QUIESCE COUNT INTERFACE DEFINITION - REG0 = 0; * 77093802 * REG 1 = IPIB, REGS10-13 WORK REGISTERS, REG14 = RETURN, * 77095802 * REG15 = ENTRY POINT IECVQCNT * 77098702 *** *** 77099002 BALR LNKREG,APBSRG GO TO THE PURGE SUBROUTINE 77101802 LR RQEREG,WKREG9 RESTORE RQE ADDRESS 77102802 LM WKREG9,REG0,RQEIOB RESTORE REGS SAVED ACROSS INTERFACE 77103802 SLR WKREGA,WKREGA ZERO A REG @Y30IPLB 77104803 CLI RQEFLAG,FF SVC 3 ENTRY TO FREE RQE @ZA16415 77105303 BNE XCPFREEC NO, RETURN TO COMM FREE RQE @ZA16415 77105803 B XCPSVC3A YES, RETURN TO SVC 3 RTN @ZA16415 77106103 EJECT 77106802 *********************************************************************** 77107103 * * 77107403 * ABEND INTERFACE * 77107803 * * 77108103 *********************************************************************** 77108403 SPACE 3 77108803 ABENDSET EQU * @YM05929 77109802 SPACE 77110802 LA REG1,DUMPFUNF SET CODE FOR FIX OR UNFIX @Y30IPLB 77111803 * FAILURE 77112802 SPACE 2 77113802 ABEND000 ABEND (REG1),DUMP,,SYSTEM ABEND REQUESTOR @YM04203 77114803 TITLE ' IECVEXCP - EXCP PROCESSOR - SVC3 FREE RQE ROUTINE' 77125902 *********************************************************************** 77126203 * * 77128003 * FREE RQE FROM SVC 3 ROUTINE * 77134303 * ENTRY FROM PURGE (EXPR) TO FREE RQE * 77134403 * INTERFACE DEFINITION CONSTRAINED BY IECVX025 ENTRY * 77134503 * INPUT - REG 1 = RQE ADDRESS, REG 14 = RETURN,13 = SAVE * 77134603 * REG 5 = BASE, NO OTHER REGS CAN BE ASSUMED * 77134703 * REGS DESTROYED = 10,15,1,14 * 77134803 * * 77134903 *********************************************************************** 77135503 SPACE 3 77136103 IECVX025 EQU * SVC 3 ENTRY - RETURN RQE 77137903 *** *** 77138803 * INTERFACE DEFINITION - REG 1 = RQE ADDRESS,13=18 WORD SAVEAREA 77139703 * 14= RETURN ADDRESS, 15= ENTRY POINT * 77142403 * THE 18 WORD SAVEAREA PASSED BY SVC 3 MUST ALSO BE USED * 77143003 * IN THE INTERFACE TO STORAGE MANAGER TO FREE THE RQE. * 77146003 * THUS, REGISTER USAGE IS CRITICAL. * 77147003 *** *** 77148003 USING *,APBSRG 77149003 STM REG0,LNKREG,C0(REG13) SAVE REGS 0-14 IN 1ST 15 WORDS 77150003 ST BASREG,C60(REG13) RESAVE 5,10,14 IN UNUSED WORDS 77151003 ST WKREGA,C64(REG13) * OF SAVE AREA - STORAGE MNGR 77152003 ST LNKREG,C68(REG13) * ONLY USES 1ST 15 WORDS 77157203 LR BASREG,APBSRG ESTABLISH BASE REGISTER START 77158203 SH BASREG,DISPX025 MAKE IT MATCH MODULE BASE 77159203 DROP APBSRG RELEASE TEMPORARY ADDRESSABILITY 77160203 MVI RQEFLAG,FF INDICATE ENTRY TO XCPFREE @YM3145 77161203 * * FROM SVC 3 INTERFACE @YM3145 77162203 L WKREGA,RQEIPIB LOAD IPIB FIELD FROM RQE @ZA16415 77164203 LTR WKREGA,WKREGA REQUEST UNDERGOING PURGE ?? @ZA16415 77166703 BNZ XCPFREEB YES, MUST DECREMENT IPIB CT @ZA16415 77166803 XCPSVC3A EQU * @ZA16415 77166903 ST WKREGA,C0(RQEREG) ZERO 1ST WORD IN RQE @ZA16415 77167003 ST WKREGA,RQENRQE ZERO NEXT RQE ON RRQ FIELD @ZA16415 77167103 L APBSRG,ACOREMGT LOAD ADDR TO STORAGE MGR @ZA16415 77167203 BAL LNKREG,XRQEFREE(APBSRG) RELEASE RQE @ZA16415 77167303 SPACE 2 @ZA16415 77167403 LM REG0,LNKREG,C0(REG13) RESTORE REGS 0-14 77167603 L BASREG,C60(REG13) RESTORE REG 5 77168503 L WKREGA,C64(REG13) RESTORE REG 10 77171203 L LNKREG,C68(REG13) RESTORE REG 14 77171803 BR LNKREG RETURN TO SVC 3 77173903 EJECT 77175103 *********************************************************************** 77176903 * * 77179303 * EXECUTED INSTRUCTIONS * 77180303 * * 77181303 *********************************************************************** 77183803 SPACE 2 77185803 RRTYPOR OI RQETYPE,C0 EXECUDED OR OF RELATED REQUEST FLAGS 77186803 XCPCMPR CLI FRRFCNT,C0 EXECUTED COMPARE OF NO OF BLOCKS AVL 77188303 XCPFLGOR OI IOSFLA,C0 EXECUTED OR FROM IOSB TO IOB 77189303 XCPIOBOR OI IOBFLAG1,C0 EXECUTED OR FROM IOB TO IOSB 77190303 SPACE 2 77191303 *********************************************************************** 77194203 * * 77195203 * CONSTANTS USED BY THE EXCP PROCESSOR * 77197903 * * 77199903 *********************************************************************** 77200903 DS 0F 77205203 XCPTRMAD DC A(XCPTERMA) ADDRESS OF TERMINATION ROUTINE @ZA08736 77205703 FLAGMASK DC X'000000FC' MASK OF COMMON IOB - IOSB BITS 77206203 IEAPGFX DC V(IEAVPSIB) ADDRESS OF PAGE FIX ROUTINE 77207203 IEAPGFR DC V(IEAVPSIF) ADDRESS OF PAGE FREE RTN @Y30IPLC 77208203 XCPFRR DC V(IECVXFRR) ADDRESS OF EXCP FRR 77210403 GET160 DC X'10000020' MASK FOR GETTING 160 BYTE BLOCKS 77211403 GETRQE DC X'10000010' MASK FOR GETTING 40 BYTE BLOCKS 77213603 ACOREMGT DC V(IECVSMGR) ADDRESS OF STORAGE MANAGER 77215603 ADEBCHK DC V(IFGDEBVR) ADDRESS OF DEBCHECK ROUTINE 77216603 ATYPE1EX DC V(IEAVEXPR) TYPE 1 EXIT ADDRESS 77218803 AOPT02 DC V(IEA0PT02) POST WITH VALIDITY CHECK 77220803 AQCNTDEC DC V(IECVQCNT) QUISCE COUNT DECREMENT SUBRTN 77221803 XCPECB DC X'00000000' EXCP'S ECB FOR PAFE FIX @YM05168 77224003 ONEPAGE DC X'00001000' CONSTANT FOR ONE PAGE 77226003 LISTFIX DC X'80000000' MASK USED TO FIX A LIST 77227003 XCPATRUN DC X'FFFFF000' TRUNC ADDR TO 4K BOUNDARY @ZA12454 77228003 XCP114RQ DC X'00000080' EXCPVR REQUEST @ZA16147 77229003 ENDSDISP DC A(XCP201-XCPBASE) DISPLACEMENT TO CHE/ABE ROUTINE 77231203 ACCWXLAT DC V(IECVTCCW) CCW TRANSLATOR ADDRESS 77232203 EXTDISP DC A(IECVEXTC-XCPBASE) DISPLACEMENT TO EXTENT CHECK ROUTINE 77234403 XCPFIXAD DC A(XCPFIX) ADDRESS OF PAGE FIX SUBRTN @YM05929 77235403 XCPBASE2 DC A(XCPTERM) BASE REG FOR TERMINATION @ZA07510 77235903 XCPENDIE DC A(XCPDIE) IOSB ENTRY POINT FOR DIE @ZA12705 77236003 XCPENPCI DC A(XCPPCI) IOSB ENTRY POINT FOR PCI @ZA12705 77236103 NORMSTAT DC X'0000737F' MASK TO CHECK FOR ABNORMAL STATUS 77236403 PCISTAT DC X'0000FF7F' MASK TO CHECK FOR OTHER THAN PCI 77237403 DAVTOFF DC Y(DEBBASIC-DEBAVT) DISPLACEMENT TO END OF DEB @YM05929 77238403 NRQEDISP DC AL2(RQENRQE-RQE) DISPLACEMENT TO NEXT RQE FIELD 77239403 DISPX025 DC AL2(IECVX025-XCPBASE) DISPLACEMENT FROM MODULE BASE 77240403 BR14 DC X'07FE' DUMMY APPENDAGE POINTER 77246802 EIGHT DC H'8' CONSTANT OF EIGHT 77250002 ZEROS DC X'00' USED TO XWAP TO KEY ZERO 77256002 EJECT 77257003 ASMFEX DC V(IEASMFEX) ADDRESS OF SMF ROUTINE 77258002 SPACE 2 77259003 IECXAPG DC A(BR14) END OF EXTENT DUMMY APPENDAGE 77260002 DC A(BR14) START I/O DUMMY APPENDAGE 77262002 DC A(BR14) PCI INTERRUPT DUMMY APPENDAGE 77264002 DC A(BR14) CHANNEL END DUMMY APPENDAGE 77266002 DC A(BR14) ABNORMAL END DUMMY APPENDAGE 77268002 ARCHN DC V(IECVRCHN) ADDRESS OF RESTORE CHAIN BLDR@YM1141 77270002 *NOTE - ANYTHING ABOVE THIS LINE MUST STAY AT THE EXACT 77272002 * DISPLACEMENT FROM IECXAPG 77274002 SPACE 2 77275003 PATCH DC 4C'IECVEXCP PATCH ' PATCH AREA @ZA08150 77276003 TITLE ' IECVEXCP -- EXCP PROCESSOR -- TERMINATION ROUTINE' 77278002 *********************************************************************** 77280002 * * 77282002 * TERMINATION ROUTINE OF EXCP PROCESSOR - THIS ROUTINE IS * 77284002 * ENTERED FROM CHANNEL OR ABNORMAL END APPENDAGE @Y30IPLC 77286003 * PROCESSING, POST STATUS, EXIT AND VARIOUS POINTS WITHIN * 77286603 * THE SVC ENTERED SECTION OF IOS. ENTRY FROM POST STATUS * 77287203 * REQUIRES ACQUIRING THE LOCAL LOCK. * 77288003 * * 77290003 * ENTRY POINTS ARE * 77294002 * * 77297003 * IECVX025 - ENTRY FROM EXIT TO FREE THE RQE. * 77300021 * XCPTERMA - EXCP PRE-TERMINATION ROUTINE ENTRY @YM30169 77350003 * FROM POST STATUS * 77360003 * XCPTERM - EXCP TERMINATION ROUTINE ENTRY FROM @Y30IPLC 77370003 * CHANNEL OR ABNORMAL END APPENDAGE @Y30IPLC 77400003 * * 77450021 *********************************************************************** 77500021 SPACE 2 77550021 USING XCPTERMA,TERMBAS TEMPORARY ADDRESSABILITY @YM30169 77553003 XCPTERMA LR BASREG,APBSRG SAVE BASE ADDRESS @YM30169 77556003 LR TERMBAS,APBSRG PREP NEW BASE @YM30169 77559003 S BASREG,TERMDISP BACK OFF BASE TO BEGINNING @YM30169 77562003 LR WKREG6,LNKREG SAVE RETURN ADDRESS @YM30169 77565003 LR IOSBRG,RQEREG SET OF BASE FOR IOSB @YM30169 77568003 BAL LNKREG,SETFRR SET FRR FOR TERM RTN @YM30169 77571003 LTR REG0,REG0 POST STATUS SEND LOCAL LOCK @YM30169 77574003 BM XCPTERMB YES, SKIP OBTAINING LOCK @YM30169 77577003 SPACE 77580003 LR IOBREG,FRRREG SAVE FRR POINTER @YM30169 77583003 SETLOCK OBTAIN,TYPE=LOCAL,MODE=UNCOND, X77586003 RELATED=(ADDRSPC,IECVEXCP(XCPEXITD)) 77589003 LR FRRREG,IOBREG RESTORE FRR POINTER @YM30169 77592003 SPACE 77595003 XCPTERMB L REG13,PSAAOLD GET ASCB POINTER @YM30169 77600003 USING ASCB,REG13 ESTABLISH ASCB ADDRESS. @YM30169 77650003 L REG13,ASCBASXB LOAD POINTER TO ASXB @YM30169 77700003 USING ASXB,REG13 ESTABLISH ASXB ADDRESS. @YM30169 77750003 LA REG13,ASXBFLSA GET SAVEAREA POINTER @YM30169 77800003 ST REG13,FRRLLSA SAVE PTR L L SAVEAREA @YM30169 77850003 L RQEREG,IOSUSE GET RQE ADDRESS @YM30169 77900003 ST RQEREG,FRRCRQE SAVE CURRENT RQE ADDRESS @YM30169 77950003 OI FRRWORK,FRRPTERM SET PRE-TERMINATION FLAG @YM30169 78000003 ST WKREG6,FRRRETR SAVE RETURN ADDRESS IN FRR @YM30169 78050003 OI FRRFLAG,FRRBKE INDICATE BACK-END PROCESS. @ZA03287 78070003 BAL LNKREG,XCPENVL LOAD ENVIRONMENTAL REGISTERS@YM30169 78100003 EJECT 78120003 CLI RQEPRT,SYSTMKEY IS THIS A SYSTEM RQE? @YM30169 78150003 BNH XCPTERMC YES, ENTER MAIN TERMINATION @YM30169 78200003 SPACE 78250003 BAL LNKREG,XCPVAL NO,VALIDITY CHECK CNTRL BLKS@YM30169 78300003 XCPTERMC L TERMBAS,XCPBASE2 RESET BASE REG FOR BACK END @ZA07510 78350003 USING XCPTERM,TERMBAS RE-ESTABLISH ADDRESSABILITY @YM30169 78400003 SPACE 78450003 XCPTERM OI FRRFLAG,FRRBKE SET BACK END PROCESSING @Y30IPLC 78500003 TM RQETYPE,RQERRTYP IS THIS A RELATED REQUEST?? @ZA15704 78540003 BNZ XCPTERMD YES, @ZA15704 78580003 OI FRRWORK,FRRUNREL NO, SET FLAG IND IN FRR @ZA15704 78660003 XCPTERMD CLI IOSCOD,ECBPGMCK WAS THIS A PROGRAM CHECK @ZA02391 78850003 * DURING PROCESSING 78900003 BNE XCP500 NO, VALID TERMINATION, CONTINUE 78950002 SPACE 78960002 TM RQETYPE,RQEDIE ABEND IN PCI APPENDAGE? @YM07285 78970002 BNO XCP480 NO, CONTINUE.... @YM07285 78980002 SPACE 78990002 LA REG1,CODEA00 SET APPROPRIATE ABEND CODE @Y30IPLB 79000003 B ABEND000 ABEND THE TASK 79010002 SPACE 79020002 XCP480 EQU * @YM07285 79030002 L WKREGB,RQETCB LOAD TCB ADDRESS 79050003 L WKREGA,TCBEXCPD-TCB(,WKREGB) GET EXCP DEBUG -> @Y30IPLB 79070003 LTR WKREGA,WKREGA ANY AREA 79080002 BNZ XCP490 BRANCH YES 79090002 LA REG1,NONXCPAB NO, GET NO DEBUG AREA COMP CODE 79092002 B XCP495 GO CALL RTM TO ABEND TASK 79094002 XCP490 EQU * * 79096002 USING XDBA,WKREGA 79098002 LH REG1,XDBACOMP GET XDBA COMP CODE 79098402 XCP495 EQU * * @YM04201 79098802 CALLRTM COMPCOD=(1),TCB=(11),TYPE=ABTERM 79118802 L REG1,FRRCRQE RESTORE RQE REGISTER 79150021 OI RQEFLAG,RQENOPST SET NO POST BIT IN RQE @YM05535 79170002 EJECT 79180003 XCP500 CLI UCBTBYT3,UCB3TAPE IS THIS A TAPE DEVICE 79250021 BNE XCP505 NO, CONTINUE PROCESSING 79300021 L WKREGA,DCBBLKCT INCREMENT THE BLOCK COUNT 79350021 AH WKREGA,IOBINCAM BY THE AMOUNT SPECIFIED 79400021 ST WKREGA,DCBBLKCT IN THE IOB. 79450021 SPACE 1 79470003 XCP505 L WKREGB,IOSIPIB LOAD IPIB ADDR FOR CK YM3829P 79510002 LTR WKREGB,WKREGB WAS THERE AN IPIB YM3829P 79520002 BNZ XCP900 YES - CHECK FURTHER YM3829P 79530002 XCP508 TM RQEFLAG,RQERETRY IS THIS A RETRY REQUEST FROM YM3829P 79550002 * APPENDAGE 79570002 BO XCP570 YES, EXECUTE RETRY LOGIC 79600021 XCP510 EQU * @ZA15704 79605003 TM RQETYPE,RQERRTYP IS THIS A RELATED REQUEST?? @ZA15704 79610003 BNZ XCP512 YES @ZA15704 79620003 OI FRRWORK,FRRUNREL NO, SET FLAG IND IN FRR @ZA15704 79630003 SPACE 1 79640003 XCP512 TM RQEFLAG,RQENOPST DID APPENDAGE WANT POSTING @ZA02391 79700003 BO XCP515 NO,SKIP POST INTERFACE 79750021 BAL WKREG6,XCPPOST POST THE ECB WITH IOBECBCC @ZA11892 79770003 SPACE 1 79820003 XCP515 TM RQEFLAG,RQEFIXST FIXING BEEN DONE FOR THIS REQUEST 79900002 BZ XCP530 NO, NO UNFIX NEEDED 79950021 LR WKREG6,RQEREG SAVE RQE ACROSS UNFIX 79970002 TM RQETYPE,RQEVIRT NEED TO GO TO TRANSLATOR 80000021 BZ XCP520 NO, MUST BE EXCPVR 80050021 L APBSRG,ACCWXLAT LOAD POINTER TO TRANSLATOR 80150021 L RQEREG,RQETCCW POINT TO TCCW 80200021 MVI TCCWOPTN-TCCW(RQEREG),TCCWUNFX WANT TO UNFIX PAGES 80250021 BALR LNKREG,APBSRG UNFIX PAGES, QUEUE BLOCKS 80300021 B XCP525 CONTINUE PROCESSINS 80350021 EJECT 80370003 XCP520 TM RQETYPE,RQE114 IS THIS A SUBSYSTEM TYPE REQUEST 80450021 BZ XCP528 NO, SKIP UNFIX PROCESS 80500021 SLR REG0,REG0 ZERO ECB ADDRES Y02062 80600002 SLR TCBREG,TCBREG ZERO THE TCB ADDRESS Y02062 80610002 L WKREGB,RQETCCW LOAD PARM LIST IN WORK REG 80650021 L RQEREG,TCCWFIX-TCCW(WKREGB) LIST ADDR IN R1 YM01039 80700002 ST TCBREG,C0(WKREGB) ZERO THE CHAIN POINTER 80800002 MVI C0(RQEREG),UNFIXIND INDICATE AN UNFIX OPERATION 80850021 O RQEREG,LISTFIX PLACE FLAGS NEEDED IN PARM REG 80900021 L APBSRG,IEAPGFR GET ADDRESS OF PAGE SUPVSR @Y30IPLC 80950003 BALR LNKREG,APBSRG UNFIX PAGES FOR EXCPVR 81000021 L DCBREG,DEBDCBAD RESTORE THE DCB ADDRESS Y02062 81010002 LTR APBSRG,APBSRG TEST RETURN CODE 81050021 BNZ ABENDSET UNFIX UNSUCCESSFUL @Y30IPLB 81180003 * SET ABEND CODE & ABEND TASK 81210002 * OTHERWISE....... 81220003 * UNFIX SUCCESSFUL-CONTINUE 81230003 SPACE 2 81250021 XCP525 LR RQEREG,WKREG6 RESTORE REGISTERS 81300021 XCP528 NI RQEFLAG,FF-RQEFIXST-RQESTBL-RQESRBS-RQECHEAC RESET FLAGS 81350021 SPACE 2 81400021 XCP530 L WKREGB,RQETCCW LOAD POINTER TO TCCW 81450021 LTR WKREGB,WKREGB WAS THERE A TCCW 81500021 BZ XCP545 NO, NO, SKIP FREE 81550021 L WKREGA,RQESRB LOAD POINTER TO SRB 81600021 ST WKREGB,C0(WKREGA) STORE TCCW POINTER INTO SRB 81650021 L IOSBRG,SRBPARM-SRB(WKREGA) GET IOSB ADDRESS @YM30176 81654003 L WKREG6,IOSERP PICK UP EWA ADDRESS. @Y30IPLC 81658003 LTR WKREG6,WKREG6 WAS THERE AN EWA ? @Y30IPLC 81666003 BZ XCP535 NO @Y30IPLC 81674003 LR APBSRG,WKREG6 SAVE FIRST EWA POINTER @ZA05189 81678003 XCP532 L LNKREG,C0(WKREG6) GET NEXT BLOCK I.E. IDAL @ZA06189 81682003 LTR LNKREG,LNKREG IS THIS THE LAST BLOCK? @ZA05189 81684003 BZ XCP533 YES, THE FORM FREE-CHAIN @ZA05189 81684503 LR WKREG6,LNKREG NO, MAKE THIS BLOCK CURRENT @ZA05189 81685003 B XCP532 RETURN TO SEE IF ANOTHER @ZA05189 81686003 SPACE 81686803 XCP533 ST WKREGA,C0(WKREG6) STORE SRB PTR IN LAST BLOCK @ZA05189 81687603 ST LNKREG,IOSERP STORE ZEROS IN EWA PTR @ZA05189 81688403 LR WKREGA,APBSRG RESTORE START OF CHAIN @ZA06221 81693403 XCP535 TM RQETYPE,RQEVIRT IS THIS A VIRTUAL REQUEST @Y30IPLC 81700003 BO XCP544 YES, DOT NO ZERO CHAIN 81750002 SLR LNKREG,LNKREG ZERO A REGISTER FOR STORE @Y30IPLB 81800003 ST LNKREG,C0(WKREGB) STORE ZEROS AS CHAIN 81850021 XCP544 BAL LNKREG,XCP700 FREE CORE FOR 160 BYTE BLKS 81900021 EJECT 81920003 XCP545 TM RQETYPE,RQETYP3 IS THIS REQUEST RELATED @YM06503 82000002 BZ XCP560 NO, SKIP DEQUEUE @YM06503 82050002 L WKREGB,DEBRRQ POINT TO DEB RRQ 82100002 SH WKREGB,NRQEDISP NEXT RQE DISPLACEMENT 82150021 BAL LNKREG,XCP800 DEQUEUE RQE 82200003 SPACE 2 82250021 XCP560 TM RQEFLAG,RQENOFRE APPENDAGE WANT RQE FREED 82300021 BO XCP565 NO, SKIP FREEING THE RQE 82350021 BAL LNKREG,XCPFREE FREE THE RQE 82400021 SPACE 2 82450021 XCP565 EQU * @ZA15704 82470003 TM FRRWORK,FRRUNREL IS THIS A RELATED REQUEST?? @ZA15704 82500003 BO XCPEXIT NO, EXIT EXCP 82550021 TM FRRWORK,FRRRRP IS REL REQ PURGE IN CONTROL @YM30169 82552003 BO XCP260 YES, RETURN TO RR PURGE @YM30169 82556003 TM DCBIFLGS,DCBIFEC PERMANENT ERROR 82560002 BO XCPEXIT YES, EXIT 82570002 TM FRRFLAG,FRRBKE IS THIS REDRIVE FROM POST STATUS 82600021 BZ XCPEXIT NO, EXIT EXCP 82650021 L WKREGB,DEBRRQ LOAD POINTER TO RRQ 82700002 LA WKREGB,C0(WKREGB) CLEAR HI ORDER BYTE 82710002 CLM WKREGB,LORD3BYT,RRQLAST-RRQ+C1(WKREGB) EMPTY CHN YM1302 82750002 BE XCPEXIT YES, NOTHING TO DO 82800021 LTR WKREGB,WKREGB IS DEBRRQ FIELD ZERO ?? @ZA15704 82810003 BZ XCPEXIT YES, EXIT, NO RRQ @ZA15704 82820003 L RQEREG,RRQFIRST-RRQ(WKREGB) LOAD NEXT RQE POINTER 82850021 ST RQEREG,FRRCRQE STORE AS CURRENT @YM05527 82855002 TM RQETYPE,RQEEOEE END-OF EXTENT ERROR, TO BE @YM04681 82860002 * PURGED? @YM04681 82870002 BO XCP105A YES,SET ADDRESSABILITY TO ABE@YM05528 82880002 SPACE 82890002 BAL LNKREG,XCPENVL LOAD ENVIRONMENTAL REGISTERS 82950021 TM RQEFLAG,RQESRBS HAS THE RQE ALREADY BEEN STARTED 83060002 BO XCPEXIT YES, RETURN TO DISPATCHER 83070002 TM RQEFLAG,RQESTBL IS THE RQE STARTABLE 83100021 BO XCP155 YES, GO START IT 83150021 TM RQEFLAG,RQERETRY IS THIS A RETRY REQUEST.... @ZA16164 83170003 BZ XCP050 NO. @ZA16164 83200003 L IOSBRG,RQESRB LOAD SRB IN PREP FOR IOSB. @ZA16164 83204003 L IOSBRG,SRBPARM-SRB(IOSBRG) LOAD IOSB POINTER @ZA16164 83208003 B XCP105 @ZA16164 83212003 EJECT 83220003 * APENDAGE REQUESTED RETRY LOGIC 83260002 * 83270002 XCP570 TM RQETYPE,RQEVIRT IS THIS A VIRTUAL REQUEST 83300021 BZ XCP590 NO, SKIP FREEING BLOCKS 83350021 TM RQEFLAG,RQEFIXST PGFREE REQUIRED @VS30159 83353003 BZ XCP590 NO,BYPASS CALL TO TCCW @VS30159 83356003 NI RQEFLAG,FF-RQEFIXST TURN OFF FIX STARTED FLAG YMXXXX 83360002 LR WKREG6,RQEREG SAVE RQE ADDRESS 83400021 L RQEREG,RQETCCW LOAD POINTER TO TCCW 83450021 L APBSRG,ACCWXLAT LOAD POINTER TO TRANSLATOR 83500021 MVI TCCWOPTN-TCCW(REG1),TCCWUNFX STATE UNFIX REQUEST 83550021 BALR LNKREG,APBSRG GO TO TRANSLATOR 83600021 * TCCW HAS CHAINED 160B BLOCKS: TCCW IDAL FIX BEBS. @ZA12707 83620003 * FOR RETRY, REASSIGN A 160B BLOCK FOR BEB AND FIX AND @ZA12707 83650003 * SET REMAINING BLOCKS ON 160B FREE CHAIN @ZA12707 83670003 L WKREGA,C0(RQEREG) 1ST BLOCK CHAINED TO TCCW @ZA12707 83690003 L WKREGB,C0(WKREGA) 2ND BLOCK CHAINED OFF TCCW @ZA12707 83710003 ST WKREGA,TCCWBEB-TCCW(RQEREG) BEB PTR IN TCCW @ZA12707 83730003 ST WKREGB,TCCWFIX-TCCW(RQEREG) FIX PTR IN TCCW @ZA12707 83750003 LR RQEREG,WKREG6 RESTORE RQE REGISTER @ZA12707 83770003 SLR WKREG6,WKREG6 ZERO WORK REGISTER @ZA12707 83790003 ST WKREG6,C0(WKREGA) ZERO BEB CHAIN PTR @ZA12707 83810003 L WKREGA,C0(WKREGB) LOAD NEXT CHAINED BLOCK @ZA12707 83830003 LTR WKREGA,WKREGA ANY 160B BLOCKS LEFT ?? @ZA12707 83850003 BZ XCP590 NO @ZA12707 83870003 ST WKREG6,C0(WKREGB) YES, ZERO FIX CHAIN PTR AND @ZA12707 83890003 BAL LNKREG,XCP700 ENQ BLOCKS ON FREE CHAIN @ZA12707 83910003 SPACE 1 @ZA12707 83930003 XCP590 NI RQEFLAG,FF-RQESTBL-RQESRBS-RQECHEAC RESET FLAGS YMXXXX 84050002 NI IOSDIE,FF-IOSECEDE RESET DIE SECOND ENTRY FLAG @ZA17778 84055003 TM RQETYPE,RQETYP3 IS THIS A RELATED REQUEST YMXXXX 84060002 BZ XCP105 NO, HANDLE IMMEDIATELY 84100021 L WKREGB,DEBRRQ POINT TO DEB RRQ 84150002 USING RRQ,WKREGB ADDRESSABILITY ON REG 11 FOR RRQ 84200021 CLC RRQFIRST,RRQLAST ONE RQE ON QUEUE 84250021 BE XCP565 YES, DONT RE-QUEUE IT 84300021 TM RQEFLAG,RQERETRY+RQENOPST IS THIS A RETRY FROM YM3829P 84310002 * THE TOP OF THE RRQ YM3829P 84320002 BO XCP565 YES - DONT REQUEUE THE RQE YM3829P 84330002 SH WKREGB,NRQEDISP NEXT RQE DISPLACEMENT 84350021 BAL LNKREG,XCP800 DEQUEUE RQE 84400003 L WKREGB,DEBRRQ RESTORE RRQ ADDRESS @YM1355 84410002 L WKREG6,RRQLAST LOAD ADDR OF LAST RQE ON CHN 84450003 ST RQEREG,RQENRQE-RQE(WKREG6) STORE THIS RQE AD AS CHN 84500021 ST RQEREG,RRQLAST STORE THIS RQE AS LAST ON CHN 84550021 ST WKREG6,FRRPRQE STORE PREVIOUS RQE IN FRR WORK AREA 84600021 SLR WKREG6,WKREG6 ZERO A REG IN PREPARATION @Y30IPLB 84650003 BCTR WKREG6,REG0 MAKE REG ALL F'S AS END OF CH 84700002 ST WKREG6,RQENRQE STORE AS END OF CHAIN 84750002 B XCP565 REDRIVE THIS DEB 84800021 DROP WKREGB DROP ADDRESSABILITY 84850021 TITLE ' IECVEXCP -- EXCP PROCESSOR -- TERM RTN SUBROUTINES' 84860002 *********************************************************************** 84865003 * COMMON QUEUEING ROUTINE FOR THE ENQUEUE OF 160 BYTE BLOCKS * 84870003 * WHICH HAVE BECOME FREE. THEY ARE CHAINED FROM THE FRR * 84875003 * WORK AREA * 84880003 *********************************************************************** 84885003 SPACE 2 84892002 XCP700 SLR APBSRG,APBSRG ZERO A COUNT REGISTER @Y30IPLB 84894003 LR WKREGB,WKREGA POINT TO TOP OF CHAIN 84896002 SLR REG0,REG0 COMPARE REGISTER @Y30IPLB 84898003 XCP720 LA APBSRG,C1(APBSRG) ADD ONE TO COUNT 84898402 C REG0,C0(WKREGB) END OF CHAIN 84898802 BE XCP740 YES, STORE IN FRR 84899202 L WKREGB,C0(WKREGB) LOAD POINTER TO NEXT BLOCK 84899602 B XCP720 LOOP TO LOOK AT NEW BLOCK 84899702 SPACE 2 84899802 XCP740 MVC C0(C4,WKREGB),FRRSTRG PLACE POINTER IN LIST 84899902 ST WKREGA,FRRSTRG STORE NEW TOP OF CHAIN POINTER 84916602 IC REG0,FRRFCNT LOAD THE PRESENT COUNT 84926602 ALR REG0,APBSRG INCREMENT BY # OF NEW BLOCKS@Y30IPLB 84936603 STC REG0,FRRFCNT STORE IN FRR WORK AREA 84946602 BR LNKREG RETURN TO CALLING RTN 84948602 EJECT 84949002 * COMMON DEQUEUE RQE ROUTINE. USED TO REMOVE AN RQE FROM THE 84949402 * RELATED REQUEST QUEUE. 84949802 SPACE 2 84949902 XCP800 TM RQEFLAG,RQENOFRE RQE ALREADY DEQUEUED YM1094 84968602 BOR LNKREG YES, RETURN @Y30IPLB 84970603 XCP820 L WKREGA,RQENRQE-RQE(WKREGB) LOAD NEXT RQE POINTER YM1094 84972602 LTR WKREGA,WKREGA END OF CHAIN 84976602 BMR LNKREG YES, CANT FIND RQE ON CHAIN @Y30IPLB 84986603 CR WKREGA,RQEREG THIS THE PRESENT RQE 84996602 BE XCP850 YES, DEQUEUE THIS ONE 84998602 LR WKREGB,WKREGA POINT TO NEXT RQE 84999002 B XCP820 LOOP LOOKING FOR THE RQE 84999402 SPACE 2 84999802 XCP850 L WKREG6,RQENRQE GET CHAIN FROM THIS RQE 84999902 ST WKREG6,RQENRQE-RQE(WKREGB) STORE IN PREVIOUS RQE 85016602 LTR WKREG6,WKREG6 WAS THIS RQE AT END 85026602 BNMR LNKREG NO, CONTINUE @Y30IPLB 85036603 LA WKREGA,RQENRQE-RQE(WKREGB) POINT TO NEXT FIELD @YM1355 85046602 SLR WKREG6,WKREG6 CLEAR REG FOR ICM @YM1355 85048602 ICM WKREG6,LORD3BYT,DEBRRQ+C1 GET RELATED REQUEST @YM1355 85049002 * * QUEUE ADDRESS @YM1355 85049102 CR WKREGA,WKREG6 IS QUEUE EMPTY @YM1355 85049202 BNE XCP860 BRANCH NO @YM1355 85049302 LR WKREGB,WKREG6 INSURE RRQLST POINTS TO RRQ @YM1355 85051902 XCP860 ST WKREGB,RRQLAST-RRQ(WKREG6) * @YM1355 85053902 BR LNKREG RETURN TO CALLING ROUTINE 85054602 EJECT 85055603 ********** 85057502 * DETERMINE PROPER ROUTING FORREQUEST UNDERGOING PURGE YM3829P 85057802 ********** 85058102 XCP900 ST WKREGB,RQEIPIB INSURE RQE KNOWS ABOUT PURGE YM3829P 85058402 USING IPIB,WKREGB YM3829P 85058702 TM RQEFLAG,RQENOFRE IS THE RQE MARKED FOR NOFREE YM3829P 85059002 BZ XCP950 NO - SHOULD Q ON TOP OF YM3829P 85059802 * PIRL ENTRY FOR EXCP YM3829P 85060602 TM IPIBOPT,IPIBRBP WAS AN RB PURGE REQUESTED YM3829P 85061402 BO XCP508 YES - WAIT AND COUNT AFTER YM3829P 85062202 * AFTER ASYNCH PROCESS YM3829P 85063002 SPACE 3 85063802 ********** 85064602 * THE FOLLOWING CODE IS ENTERED IF THE REQUEST HAS YM3829P 85065402 * ALREADY BEEN INCLUDED IN THE PURGE COUNT BUT IS NOW YM3829P 85066202 * BEING SCHEDULED FOR ASYNCHRONOUS PROCESSING (RQENOFRE) YM3829P 85067002 * AND THE RB PURGE OPTION WAS NOT REQUESTED (IPIBRBP). YM3829P 85067802 * IT IS NECESSARY TO ADJUST THE PURGE COUNT AND ZERO YM3829P 85068602 * THE RQEIPIB FIELD AT THIS TIME TO PREVENT POSSIBLE YM3829P 85069402 * INTERLOCK. YM3829P 85070202 ********** 85071002 SLR REG0,REG0 CLEAR REG FOR RTN INTERFACE YM3829P 85071802 ST REG0,RQEIPIB ZERO RQEIPIB YM3829P 85072602 LR WKREG6,FRRREG SAVE THE FRR POINTER @YM05534 85073402 LR RQEREG,WKREGB LOAD IPIB ADDR IN IFACE REG YM3829P 85074202 L APBSRG,AQCNTDEC LOAD COUNT ADJUST RTN ADDR YM3829P 85075002 BALR LNKREG,APBSRG GO ADJUST COUNT YM3829P 85075802 LR FRRREG,WKREG6 RESTORE FRR REG @YM05534 85076602 L REG13,FRRLLSA RESTORE REG 13 YM3829P 85077402 L RQEREG,FRRCRQE GET CURRENT RQE POINTER @YM05534 85077802 B XCP508 RETURN TO STANDARD PROCESSINGYM3829P 85078202 SPACE 3 85079002 ********** 85079802 * IF THE APPENDAGE DID NOT REQUEST NOFREE AND THE YM3829P 85080602 * REQUEST IS UNDERGOING PURGE THE FOLLOWING CODE WILL YM3829P 85081402 * BE ENTERED. IT WILL INSURE THAT THIS REQUEST IS PLACED YM3829P 85082202 * AT THE TOP OF THE EXCP PIRL ENTRY IF RETRY WAS YM3829P 85083002 * REQUESTED. YM3829P 85083802 ********** 85084602 XCP950 TM RQEFLAG,RQERETRY WAS RETRY REQUESTED YM3829P 85085402 BZ XCP510 NO, SEE IF POSTING REQUESTD @YM05534 85085802 LR REG0,WKREGB LOAD IPIB ADDRESS YM3829P 85087002 TM RQEFLAG,RQERETRY+RQENOPST WAS A RETRY AT THE YM3829P 85087802 * THE TOP REQUESTED YM3829P 85088602 BNO XCP970 NO - NORMAL QUEUEING YM3829P 85089402 O REG0,LISTFIX INDICATE Q ON TOP OF PIRL YM3829P 85090202 XCP970 L APBSRG,ARCHN LOAD PIRL CHAIN RTN ADDR YM3829P 85091002 BALR LNKREG,APBSRG GO ENQ RQE YM3829P 85091802 NI RQEFLAG,FF-RQERETRY-RQENOPST-RQENOFRE RESET FLAGSYM3829P 85092602 B XCP515 RETURN TO FURTHER PROCESSING YM3829P 85093402 DROP WKREGB YM3829P 85094202 DROP TERMBAS RELEASE ADDRESSABILITY 85095002 TITLE ' IECVEXCP -- EXCP PROCESSOR -- DIE ROUTINE' 85095403 *********************************************************************** 85095803 * * 85096203 * DIE ROUTINE ENTERED FROM THE I/O SUPERVISOR AFTER AN * 85096603 * INTERRUPT OCCURRED FOR AN EXCP OR EXCPVR REQUEST. * 85097003 * A CHECK IS MADE FOR A VIRTUAL = REAL OR EXCPVR PCI REQUEST * 85097403 * IF YES, THE PCI APPENDAGE IS ENTERED. FOR CHANNEL END NORMAL * 85097803 * CONDITIONS, THE RELATED REQUEST QUEUE IS CHECKED FOR ANY * 85098203 * TYPE THREE REQUESTS TO START. * 85099403 * * 85099503 * REGISTERS ON ENTRY ARE AS FOLLOWS; * 85099603 * * 85099703 * REGISTER 2 - ADDRESS OF THE IOSB * 85099803 * REGISTER 13 - ADDRESS OF THE SAVE AREA * 85099903 * REGISTER 14 - RETURN ADDRESS * 85100003 * REGISTER 15 - ENTRY POINT ADDRESS * 85100103 * * 85100203 *********************************************************************** 85100303 SPACE 2 85100403 XCPDIE TM IOSFLB-IOSB(IOBREG),IOSDIESE SECOND ENTRY TO DIE 85100503 BOR LNKREG YES, RETURN - NOTHING TO DO @Y30IPLB 85100603 STM REG0,LNKREG,C0(REG13) SAVE REGISTERS 85100703 USING XCPDIE,TERMBAS ADDRESSABILITY TO MODULE @ZA12705 85100803 LR TERMBAS,APBSRG EST BASE FOR DIE ROUTINE @ZA12705 85100903 LR BASREG,APBSRG PLACE BASE IN BASE REGISTER 85101003 S BASREG,DIEDISP SUBTRACT DISPLACEMENT TO FRONT OF 85101103 * MODULE 85101203 LR IOSBRG,IOBREG PLACE IOSB IN PROPER REGISTER 85101403 L RQEREG,IOSUSE SET UP RQE REGISTER 85101503 TM RQETYPE,RQEVIRT IS THIS REQUEST VIRTUAL 85101603 BZ XCPDIEB NO, CHECK FOR PCI STATUS 85101703 XCPDIEA SLR APBSRG,APBSRG ZERO REG FOR COMPARES @Y30IPLB 85101803 TM RQETYPE,RQETYP3 TYPE 3 RELATED REQUEST @Y30IPLB 85101903 BNO XCPDIEE NO TYPE 3, EXIT NORMAL 85102003 TM IOSTSA,CHE CHANNEL END IN INTERRUPT 85102103 BZ XCPDIEE NO, RETURN 85102203 TM IOSFLA,IOSERR UNDERGOING RECOVERY 85102303 BO XCPDIEE YES,RETURN 85102403 LH WKREGB,IOSTATUS LOAD CSW STATUS 85102503 N WKREGB,NORMSTAT AND OFF NORMAL STATUS BITS 85102603 BNZ XCPDIEE ERROR, DO NOT SCHEDULE NEXT 85102703 C APBSRG,IOSIPIB IS IPIB ADDRESS ZERO? @Y30IPLB 85102803 BNE XCPDIEE NO, THEN RETURN TO IOS @YM05532 85102903 SPACE 85103003 L REG1,RQENRQE GET NEXT RQE IN CHAIN 85103103 LTR REG1,REG1 IS THERE ANOTHER IN QUEUE 85103203 BNP XCPDIEE NO, RETURN TO IOS 85103303 TM RQEFLAG,RQESRBS+RQESTBL IF THE REQUEST HAS BEEN 85104703 * SCHEDULED AND IS STARTABLE OR IF IT HAS NOT BEEN 85104803 * SCHEDULED AND IS NOT STARTABLE, RETURN TO IOS 85104903 * IS NORMAL. BUT IF THE REQUEST IS STARTABLE BUT 85105003 * NOT SCHEDULED, IT MAY BE SCHEDULED HERE. 85105103 BNM XCPDIEE RETURN NORMAL 85105203 OI RQEFLAG,RQESRBS SET THAT IT IS SCHEDULED 85105303 L REG1,RQESRB LOAD POINTER TO ITS SRB 85105403 LA APBSRG,C4 SET RETURN CODE 4 85105503 B XCPDIEF EXIT DO NOT RELOAD REG 1 85105603 SPACE 2 85105703 XCPDIEB TM IOSTSB,PCI WAS THIS A PCI APPENDAGE REQUEST 85105803 BZ XCPDIEA NO, LOOK FOR TYPE 3 RELATED REQUEST 85105903 TM IOSDIE,IOSECEDE IS SECOND ENTRY ON @ZA06068 85106003 BO XCPDIEI YES, DO NOT GO TO PCI APPENDAGE 85106103 BAL LNKREG,XCPENVL LOAD ENVIRONMENTAL REGS 85106203 CLI RQEPRT,SYSTMKEY IS THIS A SYSTEM RQE 85106303 BNH XCPDIEG YES, SKIP VALIDITY CHECK 85106403 IECVEXP7 EQU * DIE VALIDITY CHECK ROUTINE @ZA27673 85106503 MODESET SWAPKEY,KEYADDR=RQEPRT,WORKREG=15 SWAP TO @ZA27673 85110103 NI IOBFLAG1,FF USER KEY. STORE IN IOB BUT @ZA27673 85110203 * DONT CHANGE IT. STORE IN @ZA27673 85110303 NI C0(DCBREG),FF DCB BUT DONT CHANGE IT. @ZA27673 85110403 L APBSRG,IOBECBPT POINT TO IOB ECB. @ZA27673 85110503 L LNKREG,C0(APBSRG) LOAD ECB CONTENTS. @ZA27673 85110603 DIEVAL EQU * STORE INTO ECB WITHOUT @ZA27673 85110703 LR REG0,LNKREG CHANGING ECB USING CS. @ZA27673 85110803 CS LNKREG,REG0,C0(APBSRG) THE DIE DOES NOT HOLD @ZA27673 85110903 BNE DIEVAL THE LOCAL LOCK. @ZA27673 85111203 MODESET EXTKEY=ZERO SWAP BACK TO SYSTEM KEY 0. @ZA27673 85111303 IECVEXP8 EQU * @ZA27673 85111403 XCPDIEG SLR REG0,REG0 INDICATE DIE EXIT @Y30IPLB 85111603 BAL LNKREG,XCPMAP MAP IOSB TO IOB 85111703 L WKREG6,RQETCCW GET ADDRESS OF TCCW BLOCK 85111803 USING TCCW,WKREG6 ADDRESSABILITY TO TCCW 85111903 ST REG13,TCCWCBEB SAVE SAVE ADDRESS 85112003 LA REG13,TCCWSAVE GET SAVE AREA FOR APPENDAGE 85112103 L APBSRG,DEBAPPAD LOAD APPENDAGE VECTOR TABLE ADDR 85112203 USING DEBAVT,APBSRG ADDRESSABILITY TO AVT 85112303 L APBSRG,DEBPCIA LOAD PCI APPENDAGE ADDRESS 85112403 SLR WKREG9,WKREG9 ZERO REG 9 FOR APPENDAGE @Y30IPLB 85112503 OI RQETYPE,RQEDIE INDIC EXCP DIE GOING TO @YM05537 85112603 * PCI APPENDAGE 85112703 DROP APBSRG 85112803 BALR LNKREG,APBSRG GO TO PCI APPENDAGE 85112903 SPACE 85113003 L TERMBAS,XCPENDIE RESTORE DIE BASE @ZA12705 85113103 NI RQETYPE,FF-RQEDIE INDIC PCI APPENDAGE RETURNED@YM05537 85113203 * TO EXCP DIE RTN 85113303 L REG13,TCCWCBEB LOAD SAVE AREA ADDRESS 85113403 DROP WKREG6 85113503 L WKREGB,IOBSTART GET NEW START ADDRESS 85113603 ST WKREGB,IOSVST STORE IN IOSB 85113703 TM RQETYPE,RQE1TO1 IS THIS A 1 TO 1 REQUEST 85113803 BO XCPDIEC YES DO NOT DO LRA 85113903 LRA WKREGB,C0(WKREGB) GET REAL ADDRESS 85114003 XCPDIEC ST WKREGB,IOSRST STORE IN IOSB 85114103 SPACE 2 85114203 LH WKREGB,IOSTATUS FIND STATUS TO TEST 85114303 N WKREGB,PCISTAT IS THERE ANY STATUS OTHER THAN PCI 85114403 BNZ XCPDIEH YES, CHECK WHAT IT IS 85114503 LA APBSRG,C8 NO, SET IGNORE RETURN 85114603 SPACE 1 85114703 XCPDIEE L REG1,C4(REG13) RESTORE REGISTER 1 85114803 SPACE 1 85114903 XCPDIEF L REG0,C0(REG13) RESTORE REG 0 85115003 LM IOBREG,LNKREG,C8(REG13) RESTORE REST OF REGISTERS 85115103 B C0(LNKREG,APBSRG) RETURN TO IOS 85115203 * APBSRG CONTAINS - 85115303 * 0 = NORMAL 85115403 * 4 = ENQ NEW WORK 85115503 * 8 = IGNORE 85115603 SPACE 2 85115703 XCPDIEH TM IOSTSA,CHE CHANNEL END IN PCI 85115803 BZ XCPDIEI NO, RESET THE BIT 85115903 TM IOSTSA,DVE IS THERE A DEVICE END 85116003 BZ XCPDIEA NO, DO THINGS NORMALLY 85116103 OI IOSDIE,IOSECEDE SET SECOND ENTRY FLAG @ZA06068 85116203 B XCPDIEA RETURN TO NORMAL PATH 85116303 SPACE 2 85116403 XCPDIEI NI IOSDIE,FF-IOSECEDE RESET SECOND ENTRY @ZA06068 85116503 B XCPDIEA RETURN TO LOOK FOR OTHER STATUS 85116603 DROP TERMBAS @ZA12705 85116703 TITLE ' IECVEXCP -- EXCP PROCESSOR -- PCI APPENDAGE INTERFACE' 85116803 *********************************************************************** 85116903 * * 85117003 * PCI APPENDAGE INTERFACE - THIS ROUTINE MAPS THE IOSB TO * 85117103 * THE IOB AND EXECUTES THE PCI APPENDAGE. * 85117203 * * 85117303 *********************************************************************** 85117403 SPACE 2 85117503 XCPPCI STM REG0,APBSRG,C0(REG13) SAVE REGISTERS 85117603 USING XCPPCI,TERMBAS ADDRESSABILITY FOR ENTRY @ZA12705 85117703 LR TERMBAS,APBSRG EST BASE FOR PCI ROUTINE @ZA12705 85117803 LR BASREG,APBSRG PLACE BASE IN BASEREG 85117903 S BASREG,PCIDISP POINT TO BEGINNING OF MODULE 85118003 LR IOSBRG,REG1 PLACE IOSB IN ITS BASE REGISTER 85118103 LR WKREGA,REG13 SAVE SAVE AREA ACROSS INTERFACE 85118203 BAL LNKREG,SETFRR ESTABLISH FRR 85118303 L RQEREG,IOSUSE LOAD THE ADDRESS OF THE RQE 85118403 ST RQEREG,FRRCRQE ST CURRENT RQE IN CASE OF FAILURE 85118503 ST WKREGA,FRRRETR SAVE SAVE ADDRESS FOR LATER 85118603 BAL LNKREG,XCPENVL LOAD ENVIRONMENTAL REGISTERS 85118703 CLI RQEPRT,SYSTMKEY IS THIS SYSTEM RQE 85118803 BNH XCPPCIA YES, SKIP VALIDITY CHECK 85118903 BAL LNKREG,XCPVAL VALIDITY CHECK CONTROL BLOCKS 85119003 XCPPCIA LA REG0,C1 SET NOT DIE ENTRY 85119103 BAL LNKREG,XCPMAP MAP IOSB TO IOB 85119203 LR WKREG6,FRRREG SAVE FRR POINTER 85119303 L REG13,RQETCCW FIND THE SAVE AREA 85119403 LA REG13,TCCWSAVE-TCCW(REG13) IN THE TCCW 85119503 L WKREGB,DEBAPPAD GET THE APPENDAGE VECTOR TABLE 85124503 USING DEBAVT,WKREGB ADDRESSABILITY TO THE AVT 85124603 L APBSRG,DEBPCIA GET PCI APPENDAGE ADDRESS 85124703 DROP WKREGB 85124803 SLR WKREG9,WKREG9 ZERO REG 9 FOR APPENDAGE @Y30IPLB 85124903 OI FRRFLAG,FRRPCI+FRRAACT SET PCI APPENDAGE EXEC @YM05506 85125003 BALR LNKREG,APBSRG EXECUTE THE PCI APPENDAGE 85125103 L TERMBAS,XCPENPCI RESTORE PCI BASE @ZA12705 85125203 L REG0,RQETCB LOAD THE ADDRESS OF THE TCB 85125303 NI FRRFLAG-FRREXCP(WKREG6),FF-FRRPCI-FRRAACT @ZA12704 85125403 * RESET PCI APPENDAGE ACTIVE @ZA12704 85125503 SPACE 1 @ZA06067 85125703 ******* CHECK FOR SMF RECORDING *****************************@ZA06067 85125803 TM RQEPRT,RQESMFRQ SMF RECORDING REQUIRED ?? @ZA06067 85125903 BZ XCPPCIB NO, BYPASS RECORDING @ZA06067 85126003 SPACE 85126103 L APBSRG,ASMFEX LOAD THE ADDRESS OF SMF ROUTINE 85126203 LA REG1,C1 PASS TO SMF A COUNT OF 1 @ZA05478 85126303 BALR LNKREG,APBSRG RECORD THE PCI 85126403 L RQEREG,IOSUSE RESTORE RQE REG @ZA12705 85126503 EJECT @ZA06067 85126603 XCPPCIB EQU * 85126703 LR FRRREG,WKREG6 RESTORE FRR WORK AREA POINTER YM1095 85126803 L REG13,FRRRETR RESTORE SAVE AREA POINTER YM1095 85126903 SETFRR D,WRKREGS=(WKREGA,WKREGB) DELETE FRR 85127003 LM REG0,APBSRG,C0(REG13) RESTORE REGISTERS 85127103 BR LNKREG RETURN TO POST STATUS 85127203 DROP TERMBAS @ZA12705 85127303 TITLE ' IECVEXCP -- TERMINATION INTERFACE FROM IECVEXPR' 85127403 * @ZA12705 85127703 *********************************************************************** 85128003 * TERMINATION ROUTINE INTERFACE FROM IECVEXPR - THE EXCP * 85128303 * PURGE SUBROUTINE. SET UP ENVIRONMENT TO FREE RESOURCES * 85128603 * AND TERMINATE AN I/O REQUEST THAT HAS BEEN PURGED. * 85129503 * * 85129603 * INTERFACE DEFINITION - REG 1 = RQE, REG14 = RETURN, REG15 = EP * 85129703 * REGISTERS 13 AND 14 ARE ONLY REGS RETURNED * 85129803 *********************************************************************** 85134803 SPACE 3 85136803 USING IECVXTRM,APBSRG TEMPORARY ADDRESSABILITY 85139802 IECVXTRM LR BASREG,APBSRG SET BASE REG TO HERE 85149802 S BASREG,XTRMDISP SUBTRACT DISPLACEMENT FROM HERE 85159802 DROP APBSRG DROP TEMPORARY ADDRESSABILITY 85169802 USING XCPBASE,BASREG ESTABLISH PERMANENT BASE REG 85179802 L TERMBAS,XCPBASE2 LOAD PTR TO SECOND BASE @ZA07510 85189803 USING XCPTERM,TERMBAS ADDRESSABILITY TO SECOND SECTION 85191802 LA FRRREG,SVRALN(REG13) POINT TO DUMMY FRR AREA 85193802 ST LNKREG,FRRRETR POINT TO RETURN ADDRESS 85197802 ST REG13,FRRLLSA POINT TO SAVE AREA IN FRR 85198202 SLR REG0,REG0 ZERO REG FOR STORE @Y30IPLB 85198303 ST REG0,FRRFLAG ZERO FULL WORD FLAGS FLD 85198402 MVI FRRFLAG,FRREXPR SET EXPR PURGE OR FRR @ZA12704 85198503 * TERMINATION FLAG @ZA12704 85198603 ST REG1,FRRCRQE POINT TO CURRENT RQE 85199002 ST REG0,FRRPRQE ZERO PREVIOUS RQE POINTER 85199502 ST REG0,FRRSTRG ZERO STORAGE AREA 85199602 BAL LNKREG,XCPENVL LOAD ENVIRONMENTAL REGS 85199702 B XCP510 GO FREE RESOURCES 85216402 SPACE 2 @ZA12705 85224403 TERMDISP DC A(XCPTERMA-XCPBASE) DISPLACEMENT TO PRE-TERM RTN@YM30169 85233103 XTRMDISP DC A(IECVXTRM-XCPBASE) DISPLACEMENT TO PURGE ENTRY 85249802 DIEDISP DC A(XCPDIE-XCPBASE) DISPLACEMENT TO DIE ROUTINE @ZA12705 85269803 PCIDISP DC A(XCPPCI-XCPBASE) DISPLACEMENT TO PCI ROUTINE @ZA12705 85289803 TITLE ' IECVEXCP -- EXCP PROCESSOR -- PAGE FIX INTERFACE SUBRTN' 85329802 *********************************************************************** 85409802 * PAGE FIX INTERFACE SUBROUTINE --- @YM05929 85489802 * THE PAGE FIX INTERFACE SUBROUTINE IS ENTERED TO FIX PAGES * 85569802 * AS SPECIFIED IN THE FIX LIST BUILT BY THE EXCPVR PAGE FIX * 85649802 * APPENDAGE. IN ADDITION, THIS SUBROUTINE IS ALSO ENTERED * 85729802 * TO FIX THE DEB FOR VIRTUAL=REAL EXCP REQUESTS. THESE PAR- * 85809802 * TICULIAR AREAS REQUIRE FIXING IN THAT THE PCI APPENDAGE * 85889802 * IS ENTERED VIA THE DISABLED INTERRUPT EXIT OF THE I/O SUP- * 85969802 * ERVISOR'S INTERRUPT HANDLING PROCESS. * 86049802 * * 86129802 * ENTRY - XCPFIX, FOR EXCPVR * 86209802 * XCPFIX + 4, FOR VIRTUAL=REAL * 86289802 * * 86369802 * INPUT - REGISTER 1 = RQE * 86449802 * REGISTER 3 = DEB * 86529802 * REGISTER 5 = EXCP BASE REGISTER * 86609802 * REGISTER 9 = EXCP FIX ADDRESS * 86689802 * REGISTER 10 = FIX LIST ADDRESS (EXCPVR) * 86769802 * REGISTER 10 = DEB APPENDAGE VECTOR TABLE ADDR(V=R) * 86849802 * REGISTER 11 = NUMBER OF FIX ENTRIES * 86929802 * REGISTER 13 = SAVE AREA ADDRESS * 87009802 * * 87089802 * REGISTERS DESTROYED - REGISTERS 0,6,10 AND 11 * 87169802 * * 87249802 * EXIT - XCP105 OR ABEND000 * 87329802 * * 87409802 *********************************************************************** 87649802 SPACE 2 87729802 USING *,TERMBAS ESTABLISH SUBRTN ADDRESSABIL@YM05929 87889802 XCPFIX B XCPLSTFX ENTRY FOR EXCPVR PAGE FIX @YM05929 87969802 * B XCPDEBFX ENTRY FOR V=R DEB FIX REQ @YM05929 88049802 SPACE 88129802 XCPDEBFX EQU * @YM05929 88209802 USING DEBAVT,WKREGA ADDRESS. FOR DEP APPEND VEC @YM05929 88289802 L WKREG6,DEBPCIA GET ADDR OF PCI APPENDAGE @YM05929 88369802 CLC C0(C2,WKREG6),BR14 IS APPEND JUST BR 14 RETURN?@YM05929 88449802 BE XCP105 YES, DO NOT HAVE TO FIX DEB @YM05929 88529802 DROP WKREGA @YM05929 88609802 L WKREGA,RQETCCW GET ADDR OF TCCW BLOCK(LIST)@YM05929 88689802 LA WKREGA,TCCWSAVE-TCCW(WKREGA) FIGURE LIST ADDR @YM05929 88769802 LR WKREG6,DEBREG SAVE CONTENTS(IF ENTERED) @YM05929 88849802 SH WKREG6,DAVTOFF DIFFERENCE-OFFSET TO APPEND @YM05929 88929802 ST WKREG6,C0(WKREGA) STORE IN FIX LIST,1ST ENTRY @YM05929 89009802 LA WKREGB,DEBPREFX-DEBAVT(WKREG6) ADDR OF PREFIX @YM05929 89089802 SLR REG0,REG0 INITIALIZE REG TO ZERO @Y30IPLB 89169803 IC REG0,DEBLNGTH-DEBPREFX(WKREGB) CURRENTLY - -36 @YM05929 89249802 SLL REG0,C3 MULTIPLY BY EIGHT @YM05929 89329802 ALR WKREG6,REG0 DETERMINE FAREREST ADDR @Y30IPLB 89409803 ST WKREG6,C4(WKREGA) STORE IN 2ND WORD OF LIST @YM05929 89489802 O DEBREG,LISTFIX INDICATE LIST-FIX (NEGATIVE)@YM05929 89569802 SLR WKREGB,WKREGB INITIALIZE WORK REG TO ZERO @Y30IPLB 89649803 B XCP1020 GO TO FIX THE DEB @YM05929 89729802 SPACE 2 89809802 XCPLSTFX EQU * EXCPVR PAGE FIX INTERFACE @YM05929 89889802 LA DEBREG,C0(DEBREG) INSURE POSITIVE FOR LIST FIX@YM08238 89929802 L APBSRG,RQETCCW FIND THE TCCW AGAIN @YM05929 89969802 ST WKREGA,TCCWFIX-TCCW(APBSRG) SAVE FIX LIST YM01039 90049802 LTR WKREGB,WKREGB WERE THERE ANY FIX ENTRIES @YM05929 90129802 BNP XCP105 NO, DONT FIX @YM05929 90209802 BCTR WKREGB,C0 SUBTRACT 1 FROM # OF ENTRIES@YM05929 90289802 SLL WKREGB,C3 MULTIPLY BY 8-POINT TO LAST @YM05929 90369802 * ENTRY 90449802 XCP1020 EQU * @YM05929 90529802 LA WKREGB,C4(WKREGA,WKREGB) GET SECOND WORD IN LAST@YM05929 90609802 OI C0(WKREGB),LASTENT SET END OF ENTRIES INDICATOR@YM05929 90689802 LR WKREG6,RQEREG SAVE RQE ADDRESS @YM05929 90769802 LA REG1,C0(WKREGA) PLACE LIST ADDRESS IN REG1 @YM05929 90849802 XCP1030 L WKREGB,C0(WKREGA) GET ADDRESS OF FIRST PAGE @YM05929 90929802 N WKREGB,XCPATRUN TRUNC START ADDR PAGE BNDRY @ZA12454 90949803 XCP1040 TM C0(WKREGB),FF ACCESS THE PAGE @ZA06068 90969803 A WKREGB,ONEPAGE INCREMENT TO NEXT PAGE @YM05929 91089802 CLM WKREGB,XCP7,C5(WKREGA) END OF ENTRY YET? @YM06703 91169802 BL XCP1040 NO, ACCESS THE PAGE @YM05929 91249802 TM C4(WKREGA),LASTENT END OF LIST @YM05929 91329802 BO XCP1050 YES, FIX PAGES @YM05929 91409802 LA WKREGA,C8(WKREGA) INCREMENT TO NEXT ENTRY @YM05929 91489802 B XCP1030 GET PAGES IN ENTRY @YM05929 91569802 SPACE 2 91649802 XCP1050 O REG1,LISTFIX SET FLAGS - FIX SHORT TERM @YM05929 91729802 MVI C0(REG1),FIX SET FIX FLAG IN LIST Y02062 91809802 LTR DEBREG,DEBREG ENTERED FIX ONCE @YM05929 91889802 BZ XCP1080 YES, SKIP IT THIS TIME @YM05929 91969802 BP XCP1060 NO, SET RQEFIX STARTED @YM05929 92049802 L WKREGB,DEBAPPAD GET AVT ADDRESS AGAIN @YM05929 92129802 OI DEBSIOAB-DEBAVT(WKREGB),DEBFIX SET DEBFIX BIT @YM05929 92209802 L TCBREG,C0(DEBREG) GET TCB ADDRESS FOR FIX @YM05929 92229802 LA TCBREG,C0(TCBREG) ZERO OUT HI-ORDER BYTE @YM05929 92249802 OI C0(REG1),LTFIX INDICATE LONG TERM FIX @YM05929 92269802 B XCP1070 AND CONTINUE-- @YM05929 92289802 SPACE 92369802 XCP1060 EQU * @YM05929 92449802 OI RQEFLAG-RQE(WKREG6),RQEFIXST INDIC RQE FIX @YM05029 92529802 SLR TCBREG,TCBREG DO NOT ASSOC FIX WITH TCB @Y30IPLB 92569803 SPACE 92609802 XCP1070 EQU * @YM05929 92689802 LA REG0,XCPECB GET ADDR OF ECB FOR PAGE FIX@YM05168 92769802 L APBSRG,IEAPGFX GET ADDRESS OF FIX ROUTINE @YM05929 92909802 BALR LNKREG,APBSRG GO FIX PAGES @YM05929 92969802 LTR APBSRG,APBSRG GOOD RETURN CODE @YM05929 93029802 BZ XCP1080 YES,CONTINUE PROCESSING @YM05929 93089802 CH APBSRG,EIGHT RETURN CODE 8 @YM05929 93149802 * **** BE CAREFUL, DO NOT CHANGE CC ** 93209802 LA DEBREG,C0 ZERO DEB REG @YM05929 93329802 LR WKREGA,REG1 SET UP PARM REG @YM05929 93409802 BE XCP1030 GO ACCESS THE PAGES @YM05929 93489802 SPACE 93529802 B ABENDSET SET CODE-CANNOT FIX PAGE 93569802 * AND ABEND THE TASK @YM05929 93609802 SPACE 2 @YM05929 93729802 XCP1080 LR RQEREG,WKREG6 RESTORE RQE ADDRESS @YM05929 93809802 L DEBREG,RQEDEB RESTORE DEB ADDRESS @YM05929 93889802 L DCBREG,DEBDCBAD RE-ESTABLISH REGISTER 4 @YM05929 93969802 B XCP105 CON'T.. PERFORM EXTENT CHECK@YM05929 94039802 SPACE 94109802 DROP TERMBAS 94179802 DC C'IECVEXCP' @ZA08150 94199803 DC C' UZ17578 ' PTF NUMBER FOR 030/037 @ZA30947 94200303 END 94250303