IEECVFT1 CSECT 00050002 *C 042500 ME YM3236 00060002 *A 121100 ME YM3236 00070002 TITLE 'IEECVFT1 PROCESSOR ZERO.' 00100002 * 00150002 * CHART ID. F1 00300002 * 00350002 * FUNCTION. TO INITIATE THE DIRECT ACCESS WRITE NECESSARY TO 00400002 * UPDATE THE PFK DEFINATIONS ON SYS1.DCMLIB AND TO 00450002 * PROCESS THE ASSOCIATED I/O COMPLETES. 00500002 * 00550002 * ATTRIBUTES. REFRESHABLE,PRIVILEGED,TYPE 4 SVC 00600002 * 00650002 * ENTRY POINTS. ONLY AT CSECT LABEL, IEECVFT1 00700002 * 00750002 * OPERATION. THIS ROUTINE GAINS CONTROL FROM PFK ROUTINE 2 00800002 * (IEECVFTB) WHEN A PFK DEFINATION HAS BEEN MADE 00850002 * BY MEANS OF THE K N,PFK COMMAND. IT CONSTRUCTS 00900002 * THE CHANNEL PROGRAM NECESSARY TO INITIATE THE 00950002 * WRITE AND EXITS TO PROCESSOR ONE (IEECVET1). 01000002 * PROCESSOR ONE GIVES CONTROL TO THIS ROUTINE UPON 01050002 * COMPLETION OF A PFK UPDATE WRITE. THIS ROUTINE 01100002 * DETERMINES WHETHER THE ENTIRE PFK AREA HAS BEEN 01150002 * WRITTEN OUT, AND IF NOT, UPDATES THE CHANNEL PROGRAM 01200002 * AND INITIATES THE NEXT WRITE. IF I/O CANNOT BE 01250002 * STARTED, EXIT IS MADE TO THE DEVICE I/O ROUTINE 01300002 * TO BLANK THE ENTRY AREA. 01310002 * 01350002 * EXITS ( ERROR ). NONE. 01400002 * 01450002 * EXITS ( NORMAL ). PROCESSOR ONE (IGC5107B), IF I/O IS STARTED. 01500002 * OTHERWISE, TO THE DEVICE I/O ROUTINE. 01510002 * 01550002 * INPUT. REGISTER ONE CONTAINS A POINTER TO CXSA. IT IS ASSUMED 01600002 * UPON ENTRY THAT A PFK UPDATE IS IN PROCESS OR DESIRED. 01650002 * 01700002 * EXTERNAL REFERENCES. WTO (SVC 35). 01750002 * 01800002 * ERROR CONDITIONS. DIRECT ACCESS I/O ERRORS ARE DETECTED AND AN 01850002 * APPROIATE MESSAGE IS PASSED TO THE OPERATOR. 01900002 * 01950002 * TABLES AND WORK AREAS. DCM AND A RESIDENT AREA CONTAINING 02000002 * CONTROL BLOCKS FOR DISK I/O. 02050002 * 02100002 * RESTRICTIONS. NONE. 02150002 EJECT 02200002 *********************************************************************** 02250002 * PROGRAM INITIALIZATION * 02300002 *********************************************************************** 02350002 */*IEECVFT1: CHART */ 02400002 */*%A: E (,START) IEECVFT1 */ 02450002 */*START: P (,PFKTEST) PROGRAM INITIALIZATION */ 02500002 ************************************************************* 02550002 START BALR RBASE,N0 ESTABLISH MC 02600002 USING *,RBASE PROGRAM ADDRESSABILITY MC 02650002 B BEGIN BRANCH AROUND PATCH AREA 02660002 ICATCH DC CL72'IEECVFT1' EYECATCHER AND FIELD MAINTENANCE 02670002 BEGIN EQU * END OF PATCH AREA 02680002 LR RCXSA,P1 ESTABLISH MC 02700002 USING CXSA,RCXSA CXSA ADDRESSABILITY MC 02750002 L RENTRY,CSAUCM ESTABLISH MC 02850002 USING UCMLIST,RENTRY UCMENTRY ADDRESSABILITY MC 02900002 L RRDCM,UCMXB ESTABLISH MC 02950002 USING DCMTSRT,RRDCM R DCM ADDRESSABILITY MC 03000002 L RTDCM,DCMADTRN ESTABLISH MC 03050002 USING DCMSTRT,RTDCM T DCM ADDRESSABILITY MC 03100002 L RSUB,DCMSUBAD ESTABLISH MC 03150002 USING IEECVSUB,RSUB SUB ADDRESSABILITY MC 03200002 L RDCB,SUBBLK LOAD DCB BASE REGISTER MC 03250002 USING SUBDCB,RDCB ESTABLISH ADDRESSABILITY MC 03300002 MVC DCMTRACE(DCMTRLEN),DCMTRAC2 SHIFT OLD TRACE ENTRIES 03310002 MVI DCMTREN1,ID1 PUT CSECT ID INTO 03320002 MVI DCMTREN2,ID2 NEW TRACE ENTRY 03330002 L XFBRANCH,CSAXC ADDRESS FREELOCK SUBROUTINE 03340002 LR X1PARM,RCXSA PASS CXSA ADDRESS IN REG 1 03342002 BALR XERTRN,XFBRANCH RELEASE LOCKS 03344002 EJECT 03350002 *********************************************************************** 03400002 * ROUTE CONTROL TO PFK UPDATE, I/O COMPLETE, OR EXIT. * 03450002 *********************************************************************** 03500002 */*PFKTEST: D (YES,%B,NO,IOTEST) IS PFK UPDATE DESIRED */ 03550002 ************************************************************* 03600002 PFKTEST TM DCMCOM3,DCMPFKWR UPDATE PFK MEMBER MC 03650002 BZ IOTEST NO, BRANCH MC 03700002 NI DCMCOM3,N255-DCMPFKWR SET OFF FLAG MC 03750002 TM SUBFLGS,SUBPKLIB ARE PFKS SUPPORTED MC 03800002 BZ EXIT NO, IGNORE UPDATE REQUEST MC 03850002 OI SUBFLGS,SUBPFKWR SET ON SUB FLAG MC 03860002 SPACE 3 03900002 */*%B: D (YES,EXIT,NO,PFKRTN) IS I/O ROUTINE BUSY */ 03950002 ************************************************************* 04000002 TM SUBDAIO,SUBIOUSE IS I/O ROUTINE BUSY MC 04050002 BZ PFKRTN NO, BRANCH 04060002 SPACE 3 04100002 */*EXIT: P (,EXIT2) INIT FOR I/O ROUTINE EXIT */ 04110002 ************************************************************* 04120002 EXIT L XFBRANCH,DCMIORTN LOAD IO ROUTINE ADDRESS 04130002 * FOR EXIT TO IEECVET(H,P,R, OR U) 04132002 SPACE 3 04140002 */*EXIT2: P (,%P) ZERO ECB AND INIT FOR EXIT */ 04140402 ************************************************************* 04144002 EXIT2 MVI UCMECB,N0 ZERO ECB MC 04146002 L X1PARM,DCMCXSVE RESTORE CXSA ADDRESS 04148002 SPACE 3 04148902 */*%P: R XCTL */ 04149002 ************************************************************* 04149102 BR XFBRANCH EXIT ADDRESS ALREADY SET 04149202 EJECT 04149602 */*PFKRTN: P (,%F) INITIALIZE POINTERS AND FLAGS */ 04149702 ************************************************************* 04149802 PFKRTN NI SUBFLGS,N255-SUBPFKWR SET OFF UPDATE REQUEST MC 04149902 L RB,SUBPFKAD LOAD DATA ADDRESS MC 04166602 LA RA,N4(RB) POINT TO ELEMENT MC 04176602 ST RA,SUBRLPTR SAVE ELEMENT POINTER MC 04178602 SPACE 3 04180602 */*%F: P (,EXCP) BUILD CHANNEL PROGRAM */ 04182602 ************************************************************* 04183002 ST RB,TYPE STORE DATA POINTER MC 04183102 MVI TYPE,ND SET CCW WRITE CODE MC 04183202 MVC LENGTH(N2),N0(RA) MOVE LENGTH TO CCW MC 04188802 NI LENGTH,NOSTOP ZERO POSSIBLE STOPPER MC 04190802 MVC SEEK(N8),N2(RA) MOVE TTR TO IOB MC 04192802 ST RENTRY,IOB+N4 STORE ECB POINTER MC 04193202 SPACE 3 04193602 */*EXCP: P (,%G) SET ON BUSY FLAGS */ 04194002 ************************************************************* 04194102 EXCP OI UCMSTS,UCMBF SET ON BUSY FLAG MC 04194202 OI SUBDAIO,SUBIOUSE IND I/O ROUTINE IS BUSY MC 04194302 OI DCMR3FLG,DCMR3PKA IND DA I/O COMPLETE MC 04208202 SPACE 3 04218202 */*%G: S (,EXIT2) EXCP: EXECUTE CHANNEL PROGRAM */ 04220202 ************************************************************* 04220602 LA P1,IOB LOAD IOB POINTER MC 04221002 SVC 0 EXECUTE CHANNEL PROGRAM MC 04221402 L XFBRANCH,DCMNPROC LOAD PROC 1 ADDRESS 04221502 * FOR EXIT TO IEECVET1 04221602 B EXIT2 RETURN MC 04221802 EJECT 04221902 *********************************************************************** 04222002 * PROCESS I/O COMPLETE AND START NEXT PORTION IF NECESSARY * 04222102 *********************************************************************** 04226702 */*IOTEST: D (YES,%E,NO,EXIT2) I/O COMPLETE POSTED */ 04231502 ************************************************************* 04236102 IOTEST TM UCMECB,IOCOMP IS THERE AN I/O COMPLETE ME YM3236 04250002 BNZ IODONE YES, LOOK AT IT 04300002 L XFBRANCH,DCMNPROC LOAD PROC 1 ADDRESS 04310002 B EXIT2 EXIT TO IEECVET1 04320002 SPACE 3 04350002 */*%E: P (,%N) INITIALIZE POINTERS AND FLAGS */ 04360002 ************************************************************* 04370002 IODONE NI SUBDAIO,N255-SUBIOUSE SET OFF I/O RTN BUSY 04380002 NI UCMSTS,N255-UCMBF SET OFF BUSY FLAG MC 04390002 L RA,SUBRLPTR POINT TO TTR ELEMENT MC 04392002 NI UCMDEVC,N255-UCMDEVE SET OFF I/O COMP FLG MC 04394002 SPACE 3 04396002 */*%N: D (YES,%C,NO,ERROR) WAS I/O GOOD */ 04398002 ************************************************************* 04398402 GOODIO CLI UCMECB,GOOD WAS I/O SUCCESSFUL MC 04398802 BNE ERROR NO, BRANCH MC 04399202 SPACE 3 04399702 */*%C: D (YES,CLEAR,NO,%D) WAS WRITE FINISHED */ 04399802 ************************************************************* 04399902 TM N0(RA),STOP WAS WRITE FINISHED MC 04416602 BO CLEAR YES, BRANCH MC 04426602 SPACE 2 04428602 */*%D: P (,EXCP) UPDATE CHANNEL PROGRAM */ 04430602 ************************************************************* 04432602 L RX,TYPE LOAD DATA ADDRESS MC 04433002 AH RX,LENGTH ADD LENGTH WRITTEN MC 04433102 ST RX,TYPE STORE UPDATED ADDRESS MC 04433202 LA RA,N10(RA) UPDATE TTR POINTER MC 04438802 ST RA,SUBRLPTR SAVE POINTER MC 04440802 MVC LENGTH(N2),N0(RA) MOVE LENGTH TO CCW MC 04442802 NI LENGTH,NOSTOP ENSURE STOPPER IS OFF MC 04443202 MVC SEEK(N8),N2(RA) TTR DATA TO IOB MC 04443602 B EXCP BRANCH MC 04444002 SPACE 2 04447602 */*CLEAR: D (YES,PFKRTN,NO,EXIT) ANOTHER UPDATE REQUESTED */ 04451202 ************************************************************* 04454702 CLEAR TM SUBFLGS,SUBPFKWR UPDATE PF KEYS MC 04458202 BO PFKRTN YES, BRANCH MC 04468202 B EXIT NO, BRANCH MC 04478202 EJECT 04480202 *********************************************************************** 04482202 * OUTPUT ERROR MESSAGE * 04482602 *********************************************************************** 04484202 */*ERROR: S (,NOMSG) WTO: PFK UPDATE FAILED */ 04484602 ************************************************************* 04485002 ERROR GETMAIN R,SP=255,LV=48 MC 04485402 LTR REPT,REPT WAS GETMAIN SUCCESSFUL MC 04485802 BNZ NOMSG NO, BRANCH MC 04485902 LR P2,P1 SAVE GETMAIN ADDRESS MC 04486002 MVC N0(N48,P2),WTO+N4 MOVE MSG TO GETMAIN AREA MC 04490602 SVC 35 ISSUE MESSAGE MC 04492602 LR P1,P2 RESTORE GETMAIN PARAMETER MC 04494602 FREEMAIN R,LV=48,A=(1),SP=255 MC 04495002 SPACE 2 04495102 */*NOMSG: P (,EXIT) SET OFF SUPPORT AND UPDATE FLAGS */ 04495202 ************************************************************* 04495302 NOMSG NI SUBFLGS,N255-SUBPKLIB NO LONGER UPDATE PFK MC 04495402 NI SUBFLGS,N255-SUBPFKWR SET OFF REQUEST FLAG MC 04521402 B EXIT EXIT MC 04531402 SPACE 2 04541402 WTO WTO 'IEE934I PFK UPDATE FAILED',ROUTCDE=(1) MC 04543402 SPACE 2 04545402 */*IEECVFT1: END */ 04547402 ************************************************************* 04547502 EJECT 07950002 *********************************************************************** 10000002 * REGISTER EQUATES * 10050002 *********************************************************************** 10100002 X1PARM EQU 1 10150002 XERTRN EQU 14 10160002 XFBRANCH EQU 15 10200002 P1 EQU 1 PARAMETER REGISTER 10250002 P2 EQU 2 WORK REGISTER 10300002 RBASE EQU 3 PROGRAM BASE 10350002 RSUB EQU 4 SUB BASE REGISTER 10400002 RENTRY EQU 5 UCMENTRY BASE REGISTER 10450002 RRDCM EQU 6 R DCM BASE REGISTER 10500002 RTDCM EQU 7 T DCM BASE REGISTER 10550002 RCXSA EQU 9 CXSA BASE REGISTER 10650002 RDCB EQU 10 TEMP BASE DURING EXCP ROUTINE 10700002 RA EQU 11 WORK REGISTER 10750002 RB EQU 12 WORK REGISTER 10800002 RX EQU 13 WORK REGISTER 10850002 RRTN EQU 14 CXSA BASE 10950002 REPT EQU 15 ENTRY POINT REGISTER 11000002 SPACE 4 11050002 *********************************************************************** 11100002 * MISC PROGRAM EQUATES * 11150002 *********************************************************************** 11200002 ID1 EQU C'F' 1ST CHARACTER OF CSECT ID 11210002 ID2 EQU C'1' 2ND CHARACTER OF CSECT ID 11220002 N0 EQU 0 NUMBER 11250002 N1 EQU 1 NUMBER 11300002 N2 EQU 2 NUMBER 11350002 N3 EQU 3 NUMBER 11400002 N4 EQU 4 NUMBER 11450002 N8 EQU 8 NUMBER 11500002 N10 EQU 10 NUMBER 11550002 N48 EQU 48 NUMBER 11800002 N255 EQU X'FF' NUMBER 11900002 ND EQU X'0D' NUMBER 11950002 NOSTOP EQU X'7F' UNSTOPPER FLAG 12000002 GOOD EQU X'7F' GOOD I/O INDICATOR 12050002 STOP EQU X'80' STOPPER FLAG 12100002 IOCOMP EQU X'40' I/O COMPLETE BIT ME YM3236 12110002 EJECT 12150002 *********************************************************************** 12200002 * PROGRAM DSECT AREA * 12250002 *********************************************************************** 12300002 IHACTM CXSA 12400002 EJECT 12450002 IEECUCM FORMAT=NEW 12550002 EJECT 12560002 IEERDCM 12600002 EJECT 12700002 IEETDCM 12800002 EJECT 12850002 IEECVSUB DSECT 12900002 IEECSUB Y,N,N,N,Y,Y 12950002 END 13000002