* /* START OF SPECIFICATIONS **** 00100003 * 00150003 *01* MODULE-TYPE = MODULE 00200003 * 00250003 *02* PROCESSOR = ASSEMBLER 00260003 * 00270003 **** END OF SPECIFICATIONS ***/ 00280003 TITLE 'IGG019V2 - 1419 AND 1275 END-OF-BLOCK ROUTINE' 00300000 IGG019V2 CSECT 00600000 * 00900000 * 01200000 *STATUS - CHANGE LVL 000 VERSION LVL 000 MODIFICATION LVL 000 01500000 * 01800000 * VS2 RELEASE 04.0 CHANGES @ZA07621 01803037 *C813000 @ZA07621 01806037 *A414200,447500,771500-772000 @ZA27072 01807037 *A615300-617100 @ZA28962 01808037 * VS2 RELEASE 03.0 CHANGES 01810037 *C510000 FOR ALL RELEASES XA08158/YA06791/SA72885 @ZA02240 01820037 *A584610-584640 @ZA07988 01830037 * RELEASE 21.8 CHANGES 01850003 *A582500-584600 FOR ALL RELEASES XA05468/YA04572/SA71601 @ZA00970 01900003 * 01950003 * VS2 RELEASE 1.8 PLUS CHANGES 02000003 *A210500,414500 SA72880/XA06885/YA07184 @ZA02230 02050003 *C663000 SA72880/XA06885/YA07184 @ZA02230 02060003 * 02070003 * 02080003 * 02090003 * 02092003 * 02094003 * 02096003 * 02098003 * 02098403 * 02098803 * 02099203 * 02099603 * 02099703 * 02099803 * 02099903 *FUNCTION- END-OF-BLOCK ROUTINE FOR 1419 AND 1275. 02100000 * 02400000 * 1-DETERMINE IF THE DEVICE IS ON-LINE. IF NOT ON-LINE EXIT 02700000 * 2-DETERMINE IF A WTO MESSAGE NEEDS DELETING--IF ONE DOES 03000000 * DELETE IT USING THE DOM MACRO 03300000 * 3-UPDATE MICB POINTERS (READ AND PCI) SO THEY POINT 03600000 * TO THE SAME MICB. 03900000 * 4-PUT THE ADDRESS OF THE SCU SENSE BYTE IN THE MSENSE CCW. 04200000 * AND SET THE COMMAND CHAIN ON. 04500000 * 5-PUT THE ADDRESS OF THE PCU SENSE BYTES IN THE MSENSE 04800000 * COMMANDS FOR THE PCU CCW STRING. ALSO THE DATA ADDRESS 05100000 * IN THE MREAD COMMANDS. 05400000 * 6-SET THE FIRST COMMAND CODE IN THE PCU CCW STRING TO 05700000 * ENGAGE. 06000000 * 7-ISSUE AN EXCP (SVC 00) FOR THE PCU AND THE SCU. 06300000 * 8-RETURN TO READ ROUTINE 06600000 * 06900000 *ENTRY POINT - IGG019V2 FROM THE READ ROUTINE 07200000 * L 15,DCBEOBR PICK UP ADDR OF EOB MODULE 07500000 * BALR 14,15 BRANCH TO EOB MODULE 07800000 * 08100000 *INPUT - DCB (ADDRESS OF DCB IS PASSED FROM READ IN REGISTER 2) 08400000 * DCBIOBAD-ADDRESS OF PCU IOB 08700000 * DCBIOBA -ADDRESS OF MICB 09000000 * DCBWTOID-BEFORE FIRST ENGAGE CONTAINS WTO ID NUMBER 09300000 * DCBDEBAD- ADDR OF DEB 09600000 * DCBMRIND-X'08'-CONTROL ROUTINE HAS BEEN ENTERED 09900000 * DCBMRFLG-X'20'-SUPPORT OR USER REQUESTED DISENGAGE BIT 10200000 * X'88'-USED BY PCI APPENDAGE 10500000 * X'02'-WTO MESSAGE PRESENT 10800000 * DCBBUFL-LENGTH OF EACH BUFFER 11100000 * IOB (SCU) 11400000 * IOB+16-ADDRESS OF CCW STRING FOR SCU 11700000 * IOB (PCU) 12000000 * IOB+16-ADDRESS OF CCW STRING FOR PCU 12300000 * MICB 12600000 * MICBSENS-SCU SENSE BYTE 12900000 * MICBSENS+1-PCU SENSE BYTES (2) 13200000 * MICBFLAG-X'20' FOLLOW-UP DOCUMENTS PROCESSED 13500000 * X'10' FIRST MICB AFTER ENGAGE 13800000 * MICBDATA-ADDRESS OF DATA AREA 14100000 * MICBNEXT-ADDRESS OF NEXT MICB 14400000 * DEB 14700000 * DEBUCBAD- ADDR OF UCB 15000000 * UCB 15300000 * UCBFL1-X'40'-DEVICE READY 15600000 * 15900000 *OUTPUT- DCB 16200000 * DCBAPPIN - SET TO ZERO 16500000 * DCBMRIND-X'08'- CONTROL ROUTINE BIT SET TO ZERO 16800000 * DCBMRFLG-X'10'-DISENGAGE BIT SET TO OFF 17100000 * X'20'-USER REQUESTED DISENGAGE BIT SET OFF. 17400000 * X'88'-SET TO ZERO FOR PCI APPENDAGE 17700000 * X'04'-SET TO ONE FOR PCI APPENDAGE 18000000 * X'02'-WTO MESSAGE BIT SET TO ZERO 18300000 * DCBWTOID-AFTER FIRST ENGAGE CONTAINS MICB (PCI) ADDR 18600000 * IOB (PCU) 18900000 * IOB+4-ECB IS SET TO ZEROES 19200000 * IOB (SCU) 19500000 * IOB+4-ECB IS SET TO ZEROES 19800000 * MICB- 20100000 * MICBECB - ECB IN CURRENT MICB SET TO ZEROES 20400000 * MICBFLAG-X'20'-ENGAGE THIS BUFFER BIT SET OFF 20700000 * X'10'-FIRST MICB AFTER ENGAGE SET ON 21000000 * X'04'-UNIT EXCEPTION ON THIS BUFFER SET OFF @ZA02230 21050003 * CHANNEL PROGRAM 21300000 * MSENSE CCW (FOR SCU)-COMMAND CHAIN BIT SET ON 21600000 * ADDRESS OF SENSE BYTE IN MICB PLACED IN DATA 21900000 * ADDRESS OF CCW. 22200000 * MSENSE CCW (FOR PCU)-ADDRESS OF PCU SENSE BYTES IN MICB 22500000 * PLACED IN DATA ADDRESS PORTION OF CCW'S 22800000 * MREAD-DATA ADDRESS PLACED IN ADDRESS PORTION OF CCW'S 23100000 * FIRST CCW SET TO ENGAGE 23400000 * FOURTH CCW SET TO NO-OP 23700000 * SEVENTH CCW SET TO NO-OP 24000000 * BUFFERS 24300000 * THE BUFFER CORRESPONDING TO THE CURRENT MICB IS SET TO ZEROES 24600000 * INTERVENTION REQUIRED BIT-X'08'-SET ON IF DEVICE NOT READY 24900000 * WRITE DELAY BUFFER - SET TO ONES 25200000 * 25500000 *EXTERNAL ROUTINES - SVC 00 (EXCP) FOR PCU AND SCU. 25800000 * 26100000 *EXITS NORMAL - RETURN TO READ MODULE 26400000 * 26700000 *EXITS ERROR - NONE 27000000 * 27300000 *TABLES/WORKAREAS - NONE 27600000 * 27900000 *ATTRIBUTES - REENTERABLE 28200000 * 28500000 *NOTES - NONE 28800000 * 29100000 * 29400000 * 29700000 * 30000000 * SYMBOLIC DEFINITIONS OF REGISTERS 30300000 PARMREG EQU 1 30600000 R1 EQU PARMREG 30700000 DCBREG EQU 2 BASE REGISTER FOR DCB 30900000 MICBREG EQU 4 BASE REGISTER FOR MICB 31200000 PCUIOBR EQU 5 CONTAINS PCU IOB ADDRESS 31500000 SCUIOBR EQU 6 CONTAINS SCU IOB ADDRESS 31800000 WRKREG7 EQU 7 32100000 CCWPNTR EQU 8 CCW STRING POINTER 32400000 WRKREG9 EQU 9 32700000 WRKREG10 EQU 10 33000000 BASEREG EQU 11 BASE REGISTER FOR THIS ROUTINE 33300000 RTNREG EQU 14 CONTAINS RETURN ADDRESS 33600000 ENTRYREG EQU 15 ENTRY POINT REGISTER 33900000 * 34200000 * SYMBOLIC DEFINITIONS FOR DISPLACEMENTS 34500000 * 34800000 CCWADDR EQU 24 DISP TO CCW ADDR IN IOB 35100000 COMNDCHN EQU 4 DISP TO COMMAND CHAIN BIT IN CCW 35400000 DEBUCBAD EQU 36 DISP TO SCU UCB ADDR IN DEB 35700000 ECBDISP EQU 4 DISP TO ECB IN IOB 36000000 IOBDISP EQU 8 DISP TO IOB FROM IOB PREFIX 36300000 NXTCCW EQU 8 DISP TO NEXT CCW IN STRING 36600000 NXTSENS EQU 24 DISP TO NEXT MSENSE CCW 36900000 RITEDLAY EQU 152 DISP TO WRITE DELAY BUFF 37200000 SCUCCW EQU 80 DISP TO SCU CCW FROM PCU CCW 37500000 SCUIOB EQU 48 DISP TO SCU IOB FROM PCU IOB 37800000 UCBFL1 EQU 6 DISP TO UCB DEVICE STATUS BYTE 38100000 ZERODISP EQU 0 DISP OF ZERO 38400000 NOPDIS EQU 16 DISP TO NOP IN SCU CCW CHAIN 38500000 * 38700000 * MISC DEFINITIONS 39000000 * 39300000 CCOFF EQU X'BF' SET COMMAND CHAIN BIT OFF 39600000 CMNDCHN EQU X'40' USED TO SET COMMAND CHAIN ON 39900000 CNTR EQU 1 COUNTER 40200000 CONTROL EQU X'08' CONTROL ROUTINE BEEN ENTERED 40500000 DVICERDY EQU X'40' DEVICE READY FOR PROCESSING 40800000 ENDCNT EQU 3 MAXIMUM TIMES THRU COUNTED LOOP 41100000 ENGAGE EQU X'7F' ENGAGE FOR THIS BUFFER BIT 41400000 ERPOFF EQU 3 TO RESET ERP IND @ZA27072 41420037 UNITEX EQU X'04' UNIT EXCEPT ON THIS BUFF@ZA02230 41450003 ENGAGECC EQU X'EF' ENGAGE COMMAND CODE 41700000 FOUR EQU 4 42000000 EIGHT EQU 8 LEN TO CLEAR SNS AND FLAG @ZA00970 42050003 FRSTBUF EQU X'10' SET FIRST BUFFER AFTER ENGAGE 42300000 INITBITS EQU X'67' REINITIALIZE DCBMRFLG 42600000 INTVRQD EQU X'08' BUFFER INTERVENTIN REQ BIT 42900000 MREADCC EQU X'4C' MODIFIED READ COMMAND CODE 43200000 MSENSECC EQU X'24' MSENSE COMMAND CODE 43500000 NOPCC EQU X'03' NO-OP COMMAND CODE 43800000 ONE EQU 1 44100000 ONES EQU X'FF' SET WRITE DELAY BUFERR TO ONES 44400000 ONE27 EQU 127 LENGTH OF WRITE DELAY BUFFER 44700000 PFOFF EQU X'C0' TO RESET POST FLAGS @ZA27072 44750037 PSTCMPLT EQU X'7F' POST EVENT COMPLETE 45000000 SETBITON EQU X'04' SET ON BIT IN DCB- REINITIALIZE 45300000 SETZERO EQU 0 45600000 WTOID EQU X'02' 45900000 ZERO EQU 0 46200000 * 46500000 * 46800000 USING IGG019V2,BASEREG 47100000 USING IHADCB,DCBREG 47400000 USING MICBENTR,MICBREG 47700000 LR BASEREG,ENTRYREG ESTABLISH BASE REGISTER 48000000 L MICBREG,DCBIOBA ESTABLISH BASE REG. FOR MICB 48300000 L WRKREG10,MICBDATA PICK UP ADDR OF CURRENT BUFFER 48600000 L WRKREG9,DCBDEBAD LOAD ADDR OF DEB 48900000 L WRKREG9,DEBUCBAD(WRKREG9) LOAD ADDR OF UCB 49200000 TM UCBFL1(WRKREG9),DVICERDY IS THE DEVICE READY 49500000 BZ EOB010 YES, BRANCH 49800000 TM DCBMRIND,CONTROL CONTROL ROUTINE CAUSE NOT-READY 50100000 BZ EOB010 NO, BRANCH 50400000 XI DCBMRIND,CONTROL SET OFF CONTROL RTN BIT 50700000 MVI ZERODISP(WRKREG10),INTVRQD SET ON INT REQ ONLY @ZA02240 51000037 MVI MICBECB,PSTCMPLT POST AS COMPLETE 51300000 B EOB050 BRANCH AND EXIT EOB 51600000 * 51900000 EOB010 EQU * 52200000 * 52500000 TM DCBMRFLG,WTOID IS THERE A WTO MESSAGE 52800000 BZ EOB020 NO MESSAGE - BRANCH 53100000 L PARMREG,DCBWTOID LOAD WTO ID FOR DOM MACRO 53400000 LA PARMREG,ZERODISP(PARMREG) CLEAR OUT GARBAGE 53500000 DOM MSG=(R1) ISSUE DOM MACRO 53600000 XC DCBWTOID(FOUR),DCBWTOID ZERO THE WTO ID WORD IN DCB 53700000 XI DCBMRFLG,WTOID SET THE WTO BIT TO ZERO 54000000 * 54300000 EOB020 EQU * 54600000 * 54900000 ST MICBREG,DCBWTOID UPDATE MICB ADDRESS FOR PCI 55200000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 55500000 * * 55800000 * SET ECB'S IN SCUIOB AND PCUIOB AND CURRENT BUFFER TO ZERO BEFORE * 56100000 * ISSUING AN ENGAGE. * 56400000 * * 56700000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 57000000 LH WRKREG9,DCBBUFL LOAD LENGTH OF BUFF N. (CURRENT) 57300000 BCTR WRKREG9,ZERO DECREMENT LENGTH TO ZERO BUFF N 57600000 EX WRKREG9,CRNTBUFF ZERO THE CURRENT BUFFER 57900000 MVI MICBECB,SETZERO ZERO CURRENT MICB ECB 58200000 L WRKREG7,MICBNEXT POINT TO NEXT MICB @ZA00970 58250003 XC FOUR(EIGHT,WRKREG7),FOUR(WRKREG7) CLR FLG SNS @ZA00970 58300003 L WRKREG10,MICBDATA-MICBENTR(0,WRKREG7) GET PTR @ZA00970 58400003 EX WRKREG9,CRNTBUFF CLEAR THE NEXT BUFFER @ZA00970 58460003 L WRKREG7,MICBNM1 POINT TO PRIOR MICB @ZA07988 58468037 XC FOUR(EIGHT,WRKREG7),FOUR(WRKREG7) CLR FLG SNS @ZA07988 58476037 L WRKREG10,MICBDATA-MICBENTR(0,WRKREG7) GET PTR @ZA07988 58484037 EX WRKREG9,CRNTBUFF CLEAR THE PRIOR BUFFER @ZA07988 58492037 L PCUIOBR,DCBIOBAD PICK UP THE PCU IOB ADDRESS 58500000 XC ECBDISP(FOUR,PCUIOBR),ECBDISP(PCUIOBR) ZERO PCU IOB ECB 58800000 LA SCUIOBR,SCUIOB(PCUIOBR) COMPUTE ADDRESS OF SCUIOB 59100000 XC ECBDISP(FOUR,SCUIOBR),ECBDISP(SCUIOBR) ZERO SCU IOB ECB 59400000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 59700000 * * 60000000 * THE FOLLOWING INSTRUCTIONS UPDATE THE CCW'S IN THE STRING FOR * 60300000 * THE SCU SO AN ENGAGE CAN BE ISSUED TO START THE DEVICE. * 60600000 * * 60900000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 61200000 L CCWPNTR,CCWADDR(PCUIOBR) PICK UP ADDR OF PCU CCW STRING 61500000 L PARMREG,DCBDEBAD DEB POINTER @ZA28962 61530037 ST PARMREG,0(CCWPNTR) STORE DEB ADDRESS @ZA28962 61560037 MVI 0(CCWPNTR),X'A0' STORE PURGE OPTIONS @ZA28962 61590037 LA PARMREG,0(CCWPNTR) CLEAR HI BYTE @ZA28962 61620037 PURGE (1) ISSUE PURGE @ZA28962 61650037 XC 0(5,CCWPNTR),0(CCWPNTR) CLEAR PARM LIST @ZA28962 61680037 MVI 4(CCWPNTR),X'60' RESTORE CCW FLAG @ZA28962 61710037 LA CCWPNTR,SCUCCW(CCWPNTR) COMPUTE ADDR OF SCU CCW STRING 61800000 ST CCWPNTR,CCWADDR(SCUIOBR) STORE SCU CCW ADDR IN SCU IOB 62100000 LA WRKREG9,MICBSENS PICK UP ADDR OF SCU SENSE BYTE 62400000 ST WRKREG9,ZERODISP(CCWPNTR) UPDTE ADDR IN MSENSE CCW 62700000 MVI ZERODISP(CCWPNTR),MSENSECC RESTORE MSENSE COMMAND CODE 63000000 MVI NOPDIS(CCWPNTR),MREADCC SET FOR COMMAND REJECT 63100000 OI COMNDCHN(CCWPNTR),CMNDCHN SET COMMAND CHAIN ON 63300000 ST WRKREG9,NXTSENS(CCWPNTR) PUT SENSE ADDR IN MSENSE CCW 63600000 MVI NXTSENS(CCWPNTR),MSENSECC RESTORE COMMAND CODE 63900000 NI NXTSENS+COMNDCHN(CCWPNTR),CCOFF TURN OFF COMMAND CHAIN 64200000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 64500000 * * 64800000 * THE FOLLOWING INSTRUCTIONS UPDATE THE CCW'S IN THE STRING FOR * 65100000 * THE PCU SO AN ENGAGE CAN BE ISSUED TO START THE DEVICE. * 65400000 * * 65700000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 66000000 NI MICBFLAG,ENGAGE-UNITEX CLEAR ENGAGE-UNITEX @ZA02230 66050037 OI MICBFLAG,FRSTBUF SET FIRST BFR AFTER ENGAGE BIT 66600000 L CCWPNTR,CCWADDR(PCUIOBR) PICK UP PCU CCW ADDR 66900000 MVI ZERODISP(CCWPNTR),ENGAGECC SET COMMAND CODE TO ENGAGE 67200000 LA WRKREG10,CNTR ESTABLISH LOOP COUNTER 67500000 LA WRKREG7,ENDCNT ESTABLISH MAXIMUM TIME THRU LOOP 67800000 * 68100000 EOB030 EQU * 68400000 * 68700000 LA CCWPNTR,NXTCCW(CCWPNTR) INCREMENT CCW POINTER 69000000 L WRKREG9,MICBDATA PICK UP ADDRESS OF BUFFER 69300000 AH WRKREG9,DCBBUFL ADD BFR LNG TO POINT TO LAST 69600000 BCTR WRKREG9,ZERO BYTE FOR READ BACKWARDS. 69900000 ST WRKREG9,ZERODISP(CCWPNTR) PUT DATA ADDR IN MREAD CCW 70200000 MVI ZERODISP(CCWPNTR),MREADCC RESTORE MREAD COMMAND CODE 70500000 LA CCWPNTR,NXTCCW(CCWPNTR) INCREMENT CCW POINTER 70800000 LA WRKREG9,MICBSENS+ONE PICK UP ADDR OF PCU SENSE BYTES 71100000 ST WRKREG9,ZERODISP(CCWPNTR) STORE ADDR IN MSENSE CCW 71400000 MVI ZERODISP(CCWPNTR),MSENSECC RESTORE MSENSE COMMAND CODE 71700000 CR WRKREG10,WRKREG7 PROCESSED ALL CCW'S 72000000 BE EOB040 YES, BRANCH 72300000 LA CCWPNTR,NXTCCW(CCWPNTR) INCREMENT CCW POINTER 72600000 MVI ZERODISP(CCWPNTR),NOPCC SET COMMAND CODE TO NO-OP 72900000 L MICBREG,MICBNEXT PICK UP ADDR OF NEXT MICB 73200000 LA WRKREG10,CNTR(WRKREG10) INCREMENT LOOP COUNTER 73500000 B EOB030 BRANCH TO UPDATE NEXT 3 CCWS. 73800000 * 74100000 EOB040 EQU * 74400000 * 74700000 L CCWPNTR,CCWADDR(PCUIOBR) LOAD PCU CCW ADDR 75000000 LA CCWPNTR,RITEDLAY(CCWPNTR) COMPUTE ADDR OF WRITE BUFFER 75300000 MVI ZERO(CCWPNTR),ONES * SET THE WRITE DELAY * 75600000 MVC ONE(ONE27,CCWPNTR),ZERO(CCWPNTR) * BUFFER TO ONES * 75900000 LA WRKREG9,IOBDISP LOAD DISP TO IOB FROM PREFIX 76200000 AR PCUIOBR,WRKREG9 COMPUTE PCU IOB ADDR 76500000 AR SCUIOBR,WRKREG9 COMPUTE SCU IOB ADDR 76800000 MVI DCBAPPIN,SETZERO SET DCBAPPIN TO ZEROES 77100000 NI DCBMRFG,ONES-PFOFF RESET POST FLAGS @ZA27072 77150037 NI DCBMRIND,ONES-ERPOFF RESET ERP INDICATORS @ZA27072 77200037 NI DCBMRFLG,INITBITS RE-INITIALIZE BITS IN THE DCB 77400000 OI DCBMRFLG,SETBITON RE-INITIALIZE BITS IN THE DCB 77700000 EXCP (5) ISSUE EXCP FOR PCU 78000000 EXCP (6) ISSUE EXCP FOR SCU 78300000 * 78600000 EOB050 EQU * 78900000 * 79200000 BR RTNREG RETURN TO READ MODULE 79500000 * 79800000 * 80100000 * THE FOLLOWING INSTRUCTION IS USED TO ZERO THE CURRENT BUFFER 80400000 CRNTBUFF XC ZERO(ZERO,WRKREG10),ZERO(WRKREG10) 80700000 * 81000000 DC C'IGG019V2' @ZA07621 81300037 DC CL8'&SYSDATE' @ZA07621 81320037 DC C'Z28962' @ZA07621 81340037 DC XL2'0' @ZA07621 81360037 DC D'0' @ZA07621 81400037 DCBD DSORG=BS,DEVD=MR 81600000 * MICBD - DUMMY SECTION FOR THE MICB 81650000 MICBENTR DSECT 81700000 MICBNEXT DS A 81750000 MICBECB DS A 81800000 MICBFLAG DS AL1 81850000 MICBSENS DS AL3 81900000 MICBECBA DS A 81950000 MICBNM7 DS A 82000000 MICBNM1 DS A 82050000 MICBDATA DS A 82100000 END 82200000