./ ADD SSI=01010864,NAME=IGG019VK,SOURCE=0 TITLE 'IGG019VK---RESCN ROUTINE,OCR' 00200019 IGG019VK CSECT ENTRY POINT FOR RESCN MODULE @SA65621 00250021 *********************************************************************** 00400019 *MODULE-NAME @SA65621 00450021 * IGG019VK @SA65621 00500021 * @SA65621 00550021 *DESCRIPTIVE-NAME @SA65621 00560021 * OCR RESCAN MODULE @SA65621 00570021 * @SA65621 00580021 *COPYRIGHT @SA65621 00590021 * NONE @SA65621 00592021 * @SA65621 00594021 *CHANGE-ACTIVITY @SA65621 00596021 * RELEASE 20 ADDITIONS/CHANGES/DELETIONS 00600001 *D408000,522000,524000,526000 A33939 00660001 *A252000,262000,406500-409000 A33939 00720001 * RELEASE 21 ADDITIONS/CHANGES/DELETIONS 00800001 * RELEASE 22 ADDITIONS/CHANGES/DELETIONS 01000001 * RELEASE 23 ADDITIONS/CHANGES/DELETIONS 01200001 * RELEASE 24 ADDITIONS/CHANGES/DELETIONS 01400001 * RELEASE 25 ADDITIONS/CHANGES/DELETIONS 01600001 * RELEASE 26 ADDITIONS/CHANGES/DELETIONS 01800001 * RELEASE 27 ADDITIONS/CHANGES/DELETIONS 02000001 * RELEASE 28 ADDITIONS/CHANGES/DELETIONS 02200001 * * 02400019 *STATUS - RELEASE 20 CHANGE LEVEL 001 * 02600001 * * 02800019 *FUNCTION/OPERATION - TO PROVIDE THE USER WITH THE ABILITY TO REREAD A* 03000019 * FIELD IN ERROR UP TO 9 TIMES. IF THE FIELD CAN * 03200019 * NOT BE SUCCESSFULLY READ, A READ WITH ON-LINE * 03400019 * CORRECTION MAY BE CALLED FOR BY THE USER. * 03600019 * * 03800019 *ENTRY POINTS - IGG019VK CSECT CALLING SEQUENCE - * 04000019 * LOAD DCB ADDRESS IN REGISTER 1 * 04200019 * IF ISSUED OUTSIDE THE SYNAD ROUTINE* 04400019 * THE FOLLOWING INSTRUCTIOS ARE * 04600019 * REQUIRED - * 04800019 * L 15,68(1) GET IOB ADDRESS * 05000019 * MVC 48(16,15),0(R1) MOVE TWO LOAD * 05200019 * FORMAT CCW'S TO* 05400019 * IOB+48 * 05600019 * MVC 40(8,15),0(R2) MOVE READ CCW * 05800019 * TO IOB+40 * 06000019 * THE FOLLOWING INSTRUCTIONS ARE * 06200019 * ALWAYS REQUIRED - * 06400019 * LA 0,X'0N' RETRY N TIMES * 06600019 * OR * 06800019 * LA 0,X'FN' RETRY N TIMES, THEN FORC* 07000019 * ON-LINE CORRECTION * 07200019 * L 15,12(1) GET ADDRESS OF RESCN * 07400019 * MODULE * 07600019 * BALR 14,15 LINK TO RESCN MODULE * 07800019 * * 08000019 *INPUT - IOB * 08200019 * IOBCSW - ADDRESS OF FAILING CCW IF IN SYNAD ROUTINE * 08400019 * DCB * 08600019 * DCBIOBA - ADDRESS OF THE IOB * 08800019 * DCBSYNAD - ADDRESS OF THE SYNAD ROUTINE * 09000019 *OUTPUT - COMPLETION CODE IN REGISTER 15 * 09200019 * UPDATED IOB ERROR COUNTERS * 09400019 * IF UNIT EXCEPTION OCCURS, EOF(X'40') IS POSTED IN DCBORBYT * 09600019 * IF ANY PERMANENT ERRORS OCCUR, THE EIB IS UPDATED * 09800019 * * 10000019 *EXTERNAL ROUTINES - IOS VIA EXCP * 10200019 * ERROR COUNTER UPDATE IN SYNCH ROUTINE * 10400019 * EIB UPDATE ROUTINE IN SYNCH ROUTINE * 10600019 * COMPLETION CODE ROUTINE IN SYNCH ROUTINE * 10800019 * USER SYNAD ROUTINE * 11000019 * * 11200019 *EXITS/NORMAL - RETURN TO CALLER - BR 14 * 11400019 * * 11600019 *EXITS/ERROR - ABEND, CODE 001 EOV 0(REG1) * 11800019 * * 12000019 *TABLES/WORK AREAS - USER SAVE AREA POINTED AT BY REGISTER 13 * 12200019 * * 12400019 *ATRIBUTES - REENTRANT,REUSABLE,PROBLEM PROGRAM MODE * 12600019 * * 12800019 *NOTES - N/A * 13000019 * * 13200019 *********************************************************************** 13400019 *********************************************************************** 13500019 * * 13600019 * REGISTER EQUATES * 13700019 * * 13800019 *********************************************************************** 13900019 REG0 EQU 0 GENERAL REGISTER 0 14000019 NUMF EQU 0 PARAMETER PESSER 14100019 REG1 EQU 1 GENERAL REGISTER 1 14200019 DCBR EQU 2 ADDRESS OF THE DCB 14300019 REG2 EQU 2 GENERAL REGISTER 2 14400019 IOBR EQU 3 ADDRESS OF THE IOB 14500019 REG3 EQU 3 REGISTER 3 14600019 CCWR EQU 4 CCW POINTER 14700019 WKREG1 EQU 5 WORK REGISTER 14800019 WKREG2 EQU 6 WORK REGISTER 14900019 WKREG3 EQU 7 WORK REGISTER 15000019 PARM1 EQU 7 HOLD POSSIBLE PASSED 'F' 15100019 PARM2 EQU 8 RETRY COUNTER 15200019 REG8 EQU 8 WORK REGISTER 15300019 REG9 EQU 9 GENERAL REGISTER 9 15400019 BASER EQU 9 BASE REGISTER 15500019 SAVR EQU 13 ADDRESS OF SAVE AREA 15600019 BACK EQU 14 USER RETURN ADDRESS 15700019 RETCODE EQU 15 USED TO PASS RETURN CODE 15800019 *********************************************************************** 15900019 * * 16000019 * IOB EQUATES * 16100019 * * 16200019 *********************************************************************** 16300019 IOBSTUS EQU 3 DISPLACEMENT TO IOB STATUS 16400019 IOBFLGS EQU 8 OFFSET TO IOBFLGS IN THE IOB 16500019 ECBADR EQU 12 OFFSET OF ECB ADDRESS IN IOB 16600019 IOBCSW EQU 17 DISPLACEMENT TO CSW IN IOB 16700019 DATADR EQU 0 DATA ADDRESS OFFSET IN CSW 16800019 STRTADR EQU 24 DISPLACEMENT TO IOB START ADDRESS 16900019 OFFSET1 EQU 40 OFFSET OF FIRST CCW 17000019 OFFSET2 EQU 48 OFFSET OF SECOND CCW 17100019 OFFSET3 EQU 56 OFFSET OF THIRD CCW 17200019 PERR EQU X'41' TEST FOR PERM ERROR IN ECB 17300019 UNEXCP EQU X'01' TEST UNIT EXCEPTION BIT 17400019 CCFLGON EQU X'40' SET COMM CHAIN BIT ON IN IOBFLGS 17500019 CCFLGOFF EQU X'BF' SET COMM CHAIN BIT OFF IN IOBFLGS 17600019 *********************************************************************** 17700019 * * 17800019 * DCB EQUATES * 17900019 * * 18000019 *********************************************************************** 18100019 SNBITOFF EQU X'7F' SET SYNAD IN PROCESS BIT OFF 18200019 SYNADBIT EQU X'80' SET SYNAD IN PROCESS BIT OF 18300019 PSYNAD EQU 1 TEST FOR PRESENCE OF SYNAD ROUTINE 18400019 HEOPTCD EQU X'10' TEST FOR HOPPER EMPTY EXIT REQUEST 18500019 HPREMPTY EQU X'02' TEST HOPPER EMPTY IN EIB 18600019 ERROFF EQU X'3F' TURN ERROR FLAGS OFF IN DCBIFLGS 18700019 EOF EQU X'40' SET EOF BIT IN DCBORBYT 18800019 *********************************************************************** 18900019 * * 19000019 * DECB EQUATES * 19100019 * * 19200019 *********************************************************************** 19300019 XDECB EQU 48 OFFSET OF DECB 19400019 XLNGTYP EQU 52 OFFSET OF LENGTH AND TYPE 19500019 XDCBADR EQU 56 OFFSET OF DCB ADDRESS 19600019 XCCWADR EQU 60 OFFSET OF CCW ADDRESS 19700019 XIOBADR EQU 64 OFFSET OF IOB ADDRESS 19800019 *********************************************************************** 19900019 * * 20000019 * CCW EQUATES * 20100019 * * 20200019 *********************************************************************** 20300019 COUNT EQU 6 OFFSET OF COUNT FIELD IN A CCW 20400019 CCWFLAGS EQU 4 DISPLACEMENT TO CCW FLAGS 20500019 RBCOMM EQU X'0C' READ BACKWARD COMMAND 20600019 CCOFF EQU X'BF' SET COMMAND CHAINING BIT OFF 20700019 CCON EQU X'40' SET COMMAND CHAINING BIT ON 20800019 RBDCOC EQU X'6C' RBDCOC COMMAND CODE 20900019 *********************************************************************** 21000019 * * 21100019 * SAVE AREA EQUATES * 21200019 * * 21300019 *********************************************************************** 21400019 USERSAVE EQU 12 DISPLACEMENT TO REGISTERS IN SAVE 21500019 SAVE39 EQU 16 SAVE AREA POINTER FOR REGISTERS 3-9 21600019 RETSAVE EQU 44 DISPLACEMENT TO RETURN ADDRESS SAVE 21700019 PARMSAVE EQU 48 PARAMETER SAVE AREA 21800019 FSAVE EQU 48 F SAVE AREA 21900019 RETRYSAV EQU 52 RETRY SAVE AREA 22000019 DCBSAVE EQU 68 DCB ADDRESS SAVE AREA 22100019 SAVE9 EQU 68 SAVE AREA POINTER FOR REGISTER 9 22200019 *********************************************************************** 22300019 * * 22400019 * MISCELLANEOUS EQUATES * 22500019 * * 22600019 *********************************************************************** 22700019 CNTRLB EQU X'20' SET CNTRL BIT FOR SYNAD REGISTER 22800019 ZERO EQU 0 ZERO A BYTE 22900019 SHIFTHI EQU 24 SHIFT COUNT FOR HIGH ORDER BYTE SHIFT 23000019 LNTYPLEN EQU 4 LENGTH OF LENGTH & TYPE TO MOVE 23100019 ECBMOVE EQU 4 LENGTH TO MOVE FOR ECB 23200019 CCRTN EQU 16 DISPLACEMENT TO CONDITION CODE RTN 23300019 EIBRTN EQU 8 DISPLACEMENT TO EIB ROUTINE ADDRESS 23400019 FORCECNT EQU X'02' FORCE AN EXCP FOR OLC 23500019 ERRCTADR EQU 24 DISPLACEMENT TO ADDR OF COUNTER RTN 23600019 ACTIOB EQU 8 POINT TO ACTUAL IOB 23700019 NELIM EQU X'F0' SAVE F 23800019 FELIM EQU X'0F' SAVE NUMBER OF RETRIES 23900019 CCWMOVE EQU 8 LENGTH OF CCW TO MOVE 24000019 TWELVE EQU 12 SHIFT COUNT TO SET ABEND COMP CODE 24100019 ONE EQU 1 ABEND COMPLETION CODE 24200019 RETRYEND EQU X'01' TEST FOR END OF RETRY REQUESTS A33939 25200001 ONLINE EQU X'F0' TEST FOR ON-LINE CORRECTION A33939 26200001 USING IGG019VK,RETCODE ESTABLISH TEMP BASE REG 30000019 USING IHADCB,DCBR ESTABLISH DCB REG 30200019 STM REG2,REG9,USERSAVE(SAVR) SAVE USER REGISTERS 30400019 ST BACK,RETSAVE(SAVR) SAVE RETURN ADDRESS 30600019 LR BASER,RETCODE LOAD NEW BASE REGISTER 30800019 DROP RETCODE 31000019 USING IGG019VK,BASER ESTABLISH AXDRESSIBILITY 31200019 LR DCBR,REG1 LOAD DCB REGISTER 31400019 L IOBR,DCBIOBA LOAD IOB ADDRESS 31600019 LR PARM1,NUMF SAVE PASSED PARAMETER 31800019 LR PARM2,NUMF SAVE PASSED PARAMETER 32000019 LA WKREG1,FELIM GET F ELIMINATOR 32200019 NR PARM2,WKREG1 LEAVE ONLY NUMBER OF RETRIES 32400019 LA WKREG1,NELIM GET NUMBER ELIMINATOR 32600019 NR PARM1,WKREG1 LEAVE ONLY POSSIBLE FORCE 32800019 LA PARM2,1(PARM2) BUMP COUNT BY ONE 33000019 STM PARM1,PARM2,PARMSAVE(SAVR) SAVE PASSED PARAMETERS 33200019 TM DCBORBYT,SYNADBIT TEST IF IN SYNAD ROUTINE 33400019 BZ NOTINSYN BRANCH IF NOT IN SYNAD 33600019 *********************************************************************** 33800019 * 34000019 * THIS CODE EXECUTED IF RESCN IS ISSUED IN THE SYNAD ROUTINE 34200019 * 34400019 *********************************************************************** 34600019 L CCWR,IOBCSW-1(IOBR) GET CCW ADDRESS 34800019 LA CCWR,0(CCWR) CLEAR HIGH ORDER BYTE 35000019 SH CCWR,EIGHT BACK UP BY 8 35200019 MVC OFFSET1(CCWMOVE,IOBR),0(CCWR) MOVE CCW TO IOB + 40 35400019 NI OFFSET1+CCWFLAGS(IOBR),CCOFF SET COMMAND CHAONING OFF 35600019 LA CCWR,OFFSET1(IOBR) LOAD ADDRESS OF READ COMMAND 35800019 NI IOBFLGS(IOBR),CCFLGOFF TURN COMM CHAIN BIT OF IN IOBFLGS 36000019 B RDREADY GO GET READY TO READ 36200019 *********************************************************************** 36400019 * 36600019 * THIS CODE EXECUTED IF RESCN IS NOT ISSUED IN THE SYNAD ROUTINE 36800019 * 37000019 *********************************************************************** 37200019 NOTINSYN OI OFFSET1+CCWFLAGS(IOBR),CCON SET COMMAND CHAINING ON IN 37400019 * CCW 1 37600019 OI OFFSET2+CCWFLAGS(IOBR),CCON SET CHAINING ON IN CCW 2 37800019 NI OFFSET3+CCWFLAGS(IOBR),CCOFF SET CHAINING OFF IN CCW 3 38000019 LA CCWR,OFFSET3(IOBR) LOAD ADDRESS OF READ COMMAND 38200019 *********************************************************************** 38400019 * 38600019 * THIS CODE EXECUTED WHENEVER RESCN IS ISSUED 38800019 * 39000019 *********************************************************************** 39200019 RDREADY L WKREG1,DATADR(CCWR) GET DATA ADDRESS 39400019 LA WKREG1,0(WKREG1) CLEAR HIGH ORDER BYTE 39600019 LH WKREG2,COUNT(CCWR) LOAD COUNT FROM CCW 39800019 BCTR WKREG2,0 DECREMENT COUNT BY 1 40000019 TM 0(CCWR),RBCOMM IS COMMAND A READ BACKWARD 40200019 BNO RDFWD NO DON'T ADJUST I/O AREA ADDRESS 40400019 SR WKREG1,WKREG2 ADJUST I/O AREA ADDRESS 40600019 RDFWD EQU * A33939 40650001 CLI FSAVE+3(SAVR),ONLINE IS THERE ONLINE CORRECTION A33939 40700001 BE EXCLEAR YES, CLEAR I/O AREA A33939 40750001 CLI RETRYSAV+3(SAVR),RETRYEND ARE ALL RETRIES DONE A33939 40800001 BE GOTOEIB YES, GO TO EIB ROUTINE A33939 40850001 EXCLEAR EX WKREG2,CLEAR CLEAR I/O AREA A33939 40900001 CPSRTADR EQU * 41000019 L WKREG3,STRTADR(IOBR) SAVE IOB START ADDRESS 41200019 LA WKREG2,OFFSET1(IOBR) LOAD CHANNEL PROG START ADDR 41400019 ST WKREG2,STRTADR(IOBR) SET NEW IOB START ADDRESS 41600019 NI DCBIFLGS,ERROFF TURN ERROR FLAGS OFF 41800019 L PARM2,RETRYSAV(SAVR) LOAD RETRY COUNT 42000019 BCT PARM2,READ READ UNTIL COUNT IS EXHAUSTED 42200019 B TRYOLC TRY POSSIBLE ON LINE CORRECTION 42400019 *********************************************************************** 42600019 * 42800019 * EXECUTE CHANNEL PROGRAM AND WAIT 43000019 * 43200019 *********************************************************************** 43400019 READ EQU * RETRY ROUTINE 43600019 ST PARM2,RETRYSAV(SAVR) SAVR RETRY COUNT 43800019 L REG8,IOBCSW-1(IOBR) SAVE FAILING CCW ADDRESS 44000019 EXCP ACTIOB(IOBR) EXECUTE CHANNEL PROGRAM 44200019 L REG1,ECBADR(IOBR) LOAD ECB ADDRESS 44400019 WAIT ECB=(REG1) WAIT FOR EVENT TO COMPLETE 44600019 ST REG8,IOBCSW-1(IOBR) RESTORE FAILING CCW ADDRESS 44800019 ST WKREG3,STRTADR(IOBR) RESTORE START ADDRESS 45000019 *********************************************************************** 45200019 * 45400019 * BRANCH AND LINK TO ERROR COUNTER ROUTINE 45600019 * 45800019 *********************************************************************** 46000019 L RETCODE,DCBCHECK LOAD ADDRESS OF CHECK ROUTINE 46200019 BAL BACK,ERRCTADR(RETCODE) LINK TO COUNTER UPDATE TOUTINE 46400019 *********************************************************************** 46600019 SR RETCODE,RETCODE SET RETURN CODE TO ZERO 46800019 CLI 0(CCWR),RBDCOC IS COMMAND CODE RBDCOC 47000019 BNE UETEST NO TEST FOR UNIT EXCEPTION 47200019 L REG1,ECBADR(IOBR) LOAD ECB ADDRESS 47400019 CLI 0(REG1),PERR DID ANY PERMANENT ERRORS OCCUR 47600019 BE GOTOEIB YES GO TO EIB ROUTINE 47800019 DONE NI DCBIFLGS,ERROFF RESET DCB ERROR FLAGS 48800019 OI IOBFLGS(IOBR),CCFLGON TURN COMM CHAIN BIT ON IN IOBFLGS 49000019 L BACK,RETSAVE(SAVR) RESTORE RETURN ADDRESS 49200019 LM REG2,REG9,USERSAVE(SAVR) RESTORE USER REGISTERS 49400019 BR BACK RETURN TO USER 49600019 UETEST TM IOBCSW+IOBSTUS(IOBR),UNEXCP DID UNIT EXCEPTION OCCUR 49800019 BZ NOUNEX NO TEST FOR ERRORS 50000019 OI DCBORBYT,EOF POST EOF IN DCBORBYT 50200019 NOUNEX L REG1,ECBADR(IOBR) LOAD ECB ADDRESS 50400019 CLI 0(REG1),PERR DID ANY PERMANENT ERRORS OCCUR 50600019 BE RDREADY YES GO RETRY 50800019 B DONE RETURN TO USER 51800019 TRYOLC EQU * 52000019 TM 0(CCWR),RBCOMM IS COMMAND CODE READ BACKWARD 52800019 BO RDBKWD YES DONT ADJUST I/O AREA ADDRESS 53000019 L WKREG1,0(CCWR) GET INPUT AREA ADDRESS 53200019 LA WKREG1,0(WKREG1) CLEAR HIGH ORDER BYTE 53400019 LH WKREG2,COUNT(CCWR) GET CCW BYTE COUNT 53600019 BCTR WKREG2,0 DECREMENT COUNT BY 1 53800019 AR WKREG1,WKREG2 ADD COUNT TO ADDRESS 54000019 ST WKREG1,0(CCWR) UPDATE DATA ADDRESS 54200019 RDBKWD MVI 0(CCWR),RBDCOC FORCE COMMAND CODE TO RBDCOC 54400019 MVI RETRYSAV+3(SAVR),FORCECNT SET FOR ONE NORE TIME 54600019 B CPSRTADR BRANCH TO STORE AND EX CHAN PROG 54800019 *********************************************************************** 55000019 * 55200019 * BRANCH AND LINK TO SET ERROR INDICATOR BYTE ROUTINE 55400019 * 55600019 *********************************************************************** 55800019 GOTOEIB EQU * 56000019 ERRORS L RETCODE,DCBCHECK LOAD ADDRESS OF CHECK ROUTINE 56200019 BAL BACK,EIBRTN(RETCODE) LINK TO EIB ROUTINE 56400019 *********************************************************************** 56600019 * 56800019 * BRANCH AND LINK TO SET COMPLETION CODE ROUTINE 57000019 * 57200019 *********************************************************************** 57400019 L RETCODE,DCBCHECK LOAD ADDRESS OF THE CHECK ROUTINE 57600019 BAL BACK,CCRTN(RETCODE) LINK TO CONDITION CODE ROUTINE 57800019 *********************************************************************** 58000019 TM IOBCSW+3(IOBR),UNEXCP DID UNIT EXCEPTION OCCUR 58200019 BZ SYNADCK NO CHECK FOR SYNSD 58400019 OI DCBORBYT,EOF POST EOF IN DCBORBYT 58600019 B DONE RETURN TO USER 58800019 SYNADCK TM DCBORBYT,SYNADBIT IS SYNAD ROUTINE IN CONTROL 59000019 BO DONE YES RETURN TO USER 59200019 TM DCBSYNAD+3,PSYNAD SYNAD ROUTINE PRESENT 59400019 BZ SYNPROC YES PROCESS FOR SYNAD 59600019 LA REG0,ONE SET COMPLETION CODE TO 1 59700019 SLL REG0,TWELVE ADJUST FOR EOV 59800019 LR REG1,DCBR SET REG1 TO DCB ADDRESS 60000019 EOV 0(REG1) GO TO EOV TO ABEND 60200019 *********************************************************************** 60400019 * 60600019 * RETURN TO THE USER 60800019 * 61000019 *********************************************************************** 61200019 SYNPROC TM DCBEIB,HPREMPTY HOPPER EMPTY PRESENT 61400019 BZ HPRFULL NO 61600019 TM DCBOPTCD,HEOPTCD HOPPER EMPTY EXIT SPECIFIED 61800019 BZ DONE NO RETURN TO USER 62000019 *********************************************************************** 62200019 * 62400019 * GO TO THE USER'S SYNAD ROUTINE 62600019 * 62800019 *********************************************************************** 63000019 HPRFULL L WKREG1,ECBADR(IOBR) LOAD ECB ADDRESS 63200019 MVC XDECB(ECBMOVE,SAVR),0(WKREG1) MOVE ECB TO DECB 63400019 STC RETCODE,DCBEIB+1 SAVE RETURN CODE 63600019 MVC XLNGTYP(LNTYPLEN,SAVR),LNGTYP MOVE LENGTH & TYPE TO DECB 63800019 LA WKREG2,OFFSET1(IOBR) LOAD ADDRESS OF CHANNEL PROGRAM 64000019 ST WKREG2,XCCWADR(SAVR) STORE CCW ADDRESS TO DECB 64200019 ST DCBR,XDCBADR(SAVR) STORE DCB ADDRESS TO DECB 64400019 ST IOBR,XIOBADR(SAVR) STORE IOB ADDRESS TO DECB 64600019 LA REG0,XDECB(SAVR) GET DECB ADDRESS IN REG0 64800019 LA REG1,CNTRLB SET CNTRL BIT ON IN REG1 65000019 SLL REG1,SHIFTHI SHIFT TO HIGH ORDER BYTE 65200019 OR REG1,DCBR DCB ADDRESS TO REG1 65400019 NI DCBIFLGS,ERROFF TURN ERROR FLAGS OFF 65600019 OI DCBORBYT,SYNADBIT TURN SYNAD BIT ON 65800019 L RETCODE,DCBSYNAD LOAD ADDRESS OF SYNAD ROUTINE 66000019 ST REG9,SAVE9(SAVR) SAVE REGISTER 9 66200019 LM REG2,REG9,USERSAVE(SAVR) RESTORE USER REGISTERS 66400019 ST REG1,USERSAVE(SAVR) SAVE DCB ADDRESS 66600019 BALR BACK,RETCODE BRANCH AND LINK TO USER SYNAD RTN 66800019 STM REG3,REG9,SAVE39(SAVR) SAVE USER REGISTERS 67000019 L REG9,SAVE9(SAVR) RESTORE REGISTER 9 67200019 L REG3,USERSAVE(SAVR) GEF DCB ADDRESS 67400019 ST REG2,USERSAVE(SAVR) SAVE USER REGISTER 2 67600019 LR DCBR,REG3 RESTORE DCB POINTER 67800019 NI DCBIFLGS,ERROFF TURN OFF ERROR FLAGS 68000019 NI DCBORBYT,SNBITOFF TURN OFF SYNAD BIT 68200019 LTR RETCODE,RETCODE TEST IF ADDRESS IS SPECIFIED 68400019 BZ LODRETCD RESTORE RETURN CODE IF ZERO 68600019 NI DCBORBYT,ZERO RESET OCR FLAGS 68800019 LM REG2,REG9,USERSAVE(SAVR) RESTORE USER REGISTERS 69000019 BR RETCODE BRANCH TO SPECIFIED ADDRESS 69200019 LODRETCD IC RETCODE,DCBEIB+1 RESTORE RETURN CODE 69400019 MVI DCBEIB+1,ZERO CLEAR RETURN CODE SAVE AREA 69600019 B DONE RETURN TO USER 69800019 CLEAR XC 0(1,WKREG1),0(WKREG1) EXECUTED INSTRUCTION TO CLEAR AREA 70000019 EIGHT DC H'8' HALF WORD CONSTANT 70200019 LNGTYP DC X'00008000' LENGTH AND TYPE 70400019 IHADCB DCBD DSORG=PS,DEVD=OR DCB DSECT @SA65621 70600021 END IGG019VK 70800019 ./ ADD SSI=00051787,NAME=IGG019V1,SOURCE=0 * /* START OF SPECIFICATIONS **** 00050021 * 00100021 *01* MODULE-TYPE = MODULE 00150021 * 00200021 *02* PROCESSOR = ASSEMBLER 00250021 * 00300021 **** END OF SPECIFICATIONS ***/ 00350021 TITLE 'IGG019V1 - 1419 AND 1275 READ ROUTINE' 00500000 IGG019V1 CSECT 01000000 * 01500000 * 02000000 *STATUS - CHANGE LVL 000 VERSION LVL 000 MODIFICATION LVL 000 02500000 * @SA71344 02550021 * RELEASE 21.8 CHANGES @SA71344 02600021 * @SA71344 02650021 *D820000 @SA71344 02700021 *A835500 @SA71344 02750021 * @XA05131 02800021 * VS1 RELEASE 3.1 CHANGES @XA05131 02850021 *A645500 @XA05131 02900021 *FUNCTION - READ ROUTINE FOR 1419 AND 1275. 03000000 * 1- SET THE DATA AREA OF THE LAST BUFFER PROCESSED TO BINARY 03500000 * ZEROES. 04000000 * 2- SET THE ECB IN THE MICB CORRESPONDING TO THE ABOVE BUFFER 04500000 * TO ZERO. 05000000 * 3- DETERMINE IF THE DEVICE IS ENGAGED, IF IT IS NOT ENGAGED 05500000 * BRANCH TO THE EOB ROUTINE TO ENGAGE THE DEVICE. 06000000 * 4- SET NO-OP BIT IN THE MICB SEVEN BEFORE THE CURRENT ONE. 06500000 * 5- SET DISENGAGE BIT IN THE MICB SIX BEFORE THE CURRENT ONE. 07000000 * 6- PUT THE IOB ADDRESS IN THE DECB. 07500000 * 7- PUT THE ADDRESS OF THE BUFFER TO BE PROCESSED IN THE DECB. 08000000 * 08500000 *ENTRY POINT - IGG019V1 FROM THE READ MACRO EXPANSION 09000000 * LA 1,DECB 09500000 * LA 14,DCB 10000000 * L 15,48(14) 10500000 * BALR 14,15 11000000 *INPUT- DECB 11500000 * DECB+8 = DCB ADDRESS 12000000 * DCB 12500000 * DCBIOBA = ADDRESS OF CURRENT MICB. 13000000 * DCBBUFL - BUFFER LENGTH 13500000 * DCBMRFLG = X'10' - USER REQUESTED DISENGAGE 14000000 * DCBEOBR = ADDRESS OF EOB ROUTINE 14500000 * DCBIOBAD = ADDRESS OF IOB FOR THE PCU 15000000 * MICB 15500000 * MICBNM1 = ADDRESS OF MICB JUST PRIOR TO THE CURRENT ONE. 16000000 * MICBDATA = ADDRESS OF THE BUFFER TO BE PROCESSED 16500000 * MICBFLAG = X'80' ENGAGE NECESSARY 17000000 * MICBNM7 = ADDRESS OF MICB SEVEN BEFORE THE CURRENT ONE. 17500000 * BUFFER 18000000 * BYTE 0 - X'10' - UNIT EXCEPTION 18500000 * 19000000 *OUTPUT-DECB 19500000 * DECB+16 - ADDRESS OF IOB FOR THE PCU 20000000 * DECB+12 - ADDRESS OF THE BUFFER TO BE PROCESSED 20500000 * MICB 21000000 * MICBFLAG - BIT 2 IS SET TO ZERO IN THE MICB SEVEN BEFORE 21500000 * THE CURRENT ONE. 22000000 * BIT 2 IS SET TO ONE IN THE MICB SIX BEFORE 22500000 * THE CURRENT ONE. 23000000 * MICBECB - SET TO ZERO 23500000 * BUFFER 24000000 * THE DATA AREA IN THE BUFFER BEFORE THE CURRENT ONE IS 24500000 * SET TO BINARY ZEROES 25000000 * RETURN CODES 25500000 * X'00' - EOB NOT ENTERED (ENGAGE NOT NECESSARY) 26000000 * X'04' - EOB ENTERED (ENGAGE NECESSARY) 26500000 * 27000000 *EXTERNAL ROUTINES - IGG019V1 (EOB FOR 1419) 27500000 * 28000000 *EXITS NORMAL - RETURN TO CALLER ON REG 14 AFTER ENGAGING THE DEVICE 28500000 * OR AFTER MAKING SURE BUFFER IS READY FOR PROCESSING. 29000000 * 29500000 *EXITS ERROR - NONE 30000000 * 30500000 *TABLES/WORKAREAS - CALLERS SAVE AREA 31000000 * 31500000 *ATTRIBUTES - REENTERABLE 32000000 * 32500000 *NOTES - NONE 33000000 * 33500000 * 34000000 * 34500000 * SYMBOLIC DEFINITIONS OF REGISTERS 35000000 * 35500000 RZERO EQU 0 36000000 DECBR EQU 1 DECB ADDRESS UPON ENTRY 36500000 DCBR EQU 2 DCB ADDRESS 37000000 MICBR EQU 3 MICB ADDRESS 37500000 RFOUR EQU 4 WORK REG 38000000 RFIVE EQU 5 WORK REG 38500000 RSIX EQU 6 WORK REG 39000000 RSEVEN EQU 7 WORK REG 39500000 REIGHT EQU 8 WORK REG 40000000 RNINE EQU 9 WORK REG 40500000 RTEN EQU 10 WORK REG 41000000 RELEVEN EQU 11 WORK REG 41500000 BASER EQU 12 BASE REGISTER 42000000 SAVER EQU 13 42500000 RETRNR EQU 14 43000000 ENTRYR EQU 15 43500000 * 44000000 * SYMBOLIC DEFINITIONS FOR DISPLACEMENTS 44500000 * 45000000 DECBBUFF EQU 12 DISP TO BUFFER ADDR IN DECB 45500000 DECBDCB EQU 8 DISP TO DCB ADDR IN DECB 46000000 DECBIOB EQU 16 DISP TO IOB ADDR IN DECB 46500000 DSPZERO EQU 0 ZERO DISPLACEMENT 47000000 ECBDSP EQU 4 DISP TO ECB IN MICB 47500000 IOBADDR EQU 8 DISP TO IOB FROM IOB PREFIX 48000000 LSTBUFF EQU 24 DISP TO ADDR OF BUFFER IN MICB 48500000 MICBFLG1 EQU 8 DISP TO MICB FLAG (NOP-DSNGAGE) 49000000 RTNSVE EQU 16 DISP TO REG 15 IN SAVE AREA 49500000 SVEDSP EQU 12 DISP TO SAVE AREA 50000000 * 50500000 * MISC DEFINITIONS 51000000 * 51500000 DSENFLG EQU X'40' DISENGAGE FLAG 52000000 ENGAGE EQU X'80' ENGAGE NECESSARY 52500000 FOUR EQU 4 TEST RETURN CODE 53000000 NOP EQU X'BF' NO-OP FLAG 53500000 ONE EQU 1 54000000 UNITEXCP EQU X'10' UNIT EXCEPTION POSTED 54500000 USERDSEN EQU X'20' USER REQUESTED DISENGAGE 55000000 ZERO EQU X'00' 55500000 * 56000000 * 56500000 USING IGG019V1,BASER 57000000 USING IHADCB,DCBR 57500000 USING MICBENTR,MICBR 58000000 STM RETRNR,BASER,SVEDSP(SAVER) SAVE THE USER'S REGISTERS 58500000 LR BASER,ENTRYR ESTABLISH A BASE REGISTER 59000000 L DCBR,DECBDCB(DECBR) ESTABLISH DCB ADDRESS 59500000 L MICBR,DCBIOBA ESTABLISH MICB ADDRESS 60000000 L RFOUR,MICBNM1 PICK UP ADDRESS OF LAST MICB 60500000 L RFIVE,LSTBUFF(RFOUR) PICK UP ADDRESS OF LAST BUFFER 61000000 LH RSIX,DCBBUFL PICK UP LENGTH OF DATA AREA 61500000 BCTR RSIX,ZERO DECREMENT TO CLEAR BUFFER 62000000 BCTR RSIX,ZERO DITTO 62500000 MVI DSPZERO(RFIVE),ZERO ZERO FIRST BYTE OF DATA AREA 63000000 EX RSIX,LSTBUF ZERO DATA AREA IN LAST BUFFER 63500000 SR RSIX,RSIX ZERO REG TO CLEAR ECB 64000000 ST RSIX,ECBDSP(RFOUR) ZERO ECB IN LAST MICB 64500000 ST RSIX,MICBSENS-1 ZERO FLAGS AND SENSE @XA05131 64550021 TM MICBFLAG,ENGAGE READ ISSUED ON THIS BUFF BEFORE 65000000 BO READ010 YES, BRANCH 65500000 L RSIX,MICBDATA LOAD ADDRESS OF BUFFER 66000000 TM DSPZERO(RSIX),UNITEXCP UNIT EXCEPTION 66500000 BZ READ020 NO, BRANCH 67000000 TM DCBMRFLG,USERDSEN YES, WHO REQUESTED DISENGAGE 67500000 BO READ020 DONT GO TO EOB 68000000 * 68500000 READ010 EQU * 69000000 * 69500000 L ENTRYR,DCBEOBR PICK UP EOB ENTRY POINT 70000000 ST DECBR,RTNSVE(SAVER) SAVE DECB ADDR 70500000 BALR RETRNR,ENTRYR BRANCH TO EOB ROUTINE TO ENGAGE 71000000 L DECBR,RTNSVE(SAVER) LOAD DECB ADDR 71500000 LA ENTRYR,FOUR LOAD RETURN CODE 72000000 ST ENTRYR,RTNSVE(SAVER) SET RETURN CODE 72500000 B READ020 BRANCH AROUND MOVE 73000000 * 73500000 * 74000000 * THIS INSTRUCTION IS TO ZERO THE LAST BUFFER 74500000 * 75000000 LSTBUF MVC ONE(ZERO,RFIVE),ZERO(RFIVE) ZERO BUFF N-1 75500000 * 76000000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 76500000 * * 77000000 * THE NEXT FOUR INSTRUCTIONS PREVENT THE REFILLING OF BUFFERS * 77500000 * THAT HAVE NOT BEEN PROCESSED YET. * 78000000 * * 78500000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 79000000 * 79500000 READ020 EQU * 80000000 * 80500000 L RFOUR,MICBNM7 PICK UP ADDRESS OF MICB SEVEN 81000000 * BEFORE THE CURRENT MICB 81500000 L RFIVE,DSPZERO(RFOUR) PICK UP ADDRESS OF MICB SIX 82500000 * BEFORE THE CURRENT MICB 83000000 OI MICBFLG1(RFIVE),DSENFLG SET FLAG TO INDICATE DISENGAGE 83500000 NI MICBFLG1(RFOUR),NOP SET DISENG FLAG OFF @SA71344 83550021 LA RFOUR,FOUR PICK UP EOB RETURN CODE 84000000 CR RFOUR,ENTRYR BEEN TO EOB 84500000 BE READ030 YES, BRANCH 85000000 SR ENTRYR,ENTRYR SET RETURN CODE 85500000 ST ENTRYR,RTNSVE(SAVER) STORE RETURN CODE IN SAVE AREA 86000000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 86500000 * * 87000000 * PUT ADDRESS OF IOB AND ADDRESS OF BUFFER TO BE PROCESSED IN THE * 87500000 * DECB BEFORE EXITING THIS ROUTINE. * 88000000 * * 88500000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 89000000 * 89500000 READ030 EQU * 90000000 * 90500000 L RFOUR,DCBIOBAD PICK UP IOB PREFIX ADDR 91000000 LA RFOUR,IOBADDR(RFOUR) COMPUTE IOB ADDR 91500000 ST RFOUR,DECBIOB(DECBR) UPDATE IOB ADDR IN DECB 92000000 MVC DECBBUFF(FOUR,DECBR),MICBDATA MOVE BUFFER ADDR TO DECB 92500000 LM RETRNR,BASER,SVEDSP(SAVER) LOAD THE USER'S REGISTERS 93000000 BR RETRNR RETURN TO USER 93500000 DS 16C RESERVED FOR MODIFICATIONS 94000000 DCBD DSORG=BS,DEVD=MR 94500000 * MICBD - DUMMY SECTION FOR THE MICB 94590000 MICBENTR DSECT 94680000 MICBNEXT DS A 94770000 MICBECB DS A 94860000 MICBFLAG DS AL1 94950000 MICBSENS DS AL3 95040000 MICBECBA DS A 95130000 MICBNM7 DS A 95220000 MICBNM1 DS A 95310000 MICBDATA DS A 95400000 END 95500000 ./ ADD SSI=00050420,NAME=IGG019V2,SOURCE=0 TITLE 'IGG019V2 - 1419 AND 1275 END-OF-BLOCK ROUTINE' 00300019 IGG019V2 CSECT 00600019 * 00900019 * 01200019 *STATUS - CHANGE LVL 000 VERSION LVL 000 MODIFICATION LVL 000 01500019 * 01800019 *FUNCTION- END-OF-BLOCK ROUTINE FOR 1419 AND 1275. 02100019 * 02400019 * 1-DETERMINE IF THE DEVICE IS ON-LINE. IF NOT ON-LINE EXIT 02700019 * 2-DETERMINE IF A WTO MESSAGE NEEDS DELETING--IF ONE DOES 03000019 * DELETE IT USING THE DOM MACRO 03300019 * 3-UPDATE MICB POINTERS (READ AND PCI) SO THEY POINT 03600019 * TO THE SAME MICB. 03900019 * 4-PUT THE ADDRESS OF THE SCU SENSE BYTE IN THE MSENSE CCW. 04200019 * AND SET THE COMMAND CHAIN ON. 04500019 * 5-PUT THE ADDRESS OF THE PCU SENSE BYTES IN THE MSENSE 04800019 * COMMANDS FOR THE PCU CCW STRING. ALSO THE DATA ADDRESS 05100019 * IN THE MREAD COMMANDS. 05400019 * 6-SET THE FIRST COMMAND CODE IN THE PCU CCW STRING TO 05700019 * ENGAGE. 06000019 * 7-ISSUE AN EXCP (SVC 00) FOR THE PCU AND THE SCU. 06300019 * 8-RETURN TO READ ROUTINE 06600019 * 06900019 *ENTRY POINT - IGG019V2 FROM THE READ ROUTINE 07200019 * L 15,DCBEOBR PICK UP ADDR OF EOB MODULE 07500019 * BALR 14,15 BRANCH TO EOB MODULE 07800019 * 08100019 *INPUT - DCB (ADDRESS OF DCB IS PASSED FROM READ IN REGISTER 2) 08400019 * DCBIOBAD-ADDRESS OF PCU IOB 08700019 * DCBIOBA -ADDRESS OF MICB 09000019 * DCBWTOID-BEFORE FIRST ENGAGE CONTAINS WTO ID NUMBER 09300019 * DCBDEBAD- ADDR OF DEB 09600019 * DCBMRIND-X'08'-CONTROL ROUTINE HAS BEEN ENTERED 09900019 * DCBMRFLG-X'20'-SUPPORT OR USER REQUESTED DISENGAGE BIT 10200019 * X'88'-USED BY PCI APPENDAGE 10500019 * X'02'-WTO MESSAGE PRESENT 10800019 * DCBBUFL-LENGTH OF EACH BUFFER 11100019 * IOB (SCU) 11400019 * IOB+16-ADDRESS OF CCW STRING FOR SCU 11700019 * IOB (PCU) 12000019 * IOB+16-ADDRESS OF CCW STRING FOR PCU 12300019 * MICB 12600019 * MICBSENS-SCU SENSE BYTE 12900019 * MICBSENS+1-PCU SENSE BYTES (2) 13200019 * MICBFLAG-X'20' FOLLOW-UP DOCUMENTS PROCESSED 13500019 * X'10' FIRST MICB AFTER ENGAGE 13800019 * MICBDATA-ADDRESS OF DATA AREA 14100019 * MICBNEXT-ADDRESS OF NEXT MICB 14400019 * DEB 14700019 * DEBUCBAD- ADDR OF UCB 15000019 * UCB 15300019 * UCBFL1-X'40'-DEVICE READY 15600019 * 15900019 *OUTPUT- DCB 16200019 * DCBAPPIN - SET TO ZERO 16500019 * DCBMRIND-X'08'- CONTROL ROUTINE BIT SET TO ZERO 16800019 * DCBMRFLG-X'10'-DISENGAGE BIT SET TO OFF 17100019 * X'20'-USER REQUESTED DISENGAGE BIT SET OFF. 17400019 * X'88'-SET TO ZERO FOR PCI APPENDAGE 17700019 * X'04'-SET TO ONE FOR PCI APPENDAGE 18000019 * X'02'-WTO MESSAGE BIT SET TO ZERO 18300019 * DCBWTOID-AFTER FIRST ENGAGE CONTAINS MICB (PCI) ADDR 18600019 * IOB (PCU) 18900019 * IOB+4-ECB IS SET TO ZEROES 19200019 * IOB (SCU) 19500019 * IOB+4-ECB IS SET TO ZEROES 19800019 * MICB- 20100019 * MICBECB - ECB IN CURRENT MICB SET TO ZEROES 20400019 * MICBFLAG-X'20'-ENGAGE THIS BUFFER BIT SET OFF 20700019 * X'10'-FIRST MICB AFTER ENGAGE SET ON 21000019 * CHANNEL PROGRAM 21300019 * MSENSE CCW (FOR SCU)-COMMAND CHAIN BIT SET ON 21600019 * ADDRESS OF SENSE BYTE IN MICB PLACED IN DATA 21900019 * ADDRESS OF CCW. 22200019 * MSENSE CCW (FOR PCU)-ADDRESS OF PCU SENSE BYTES IN MICB 22500019 * PLACED IN DATA ADDRESS PORTION OF CCW'S 22800019 * MREAD-DATA ADDRESS PLACED IN ADDRESS PORTION OF CCW'S 23100019 * FIRST CCW SET TO ENGAGE 23400019 * FOURTH CCW SET TO NO-OP 23700019 * SEVENTH CCW SET TO NO-OP 24000019 * BUFFERS 24300019 * THE BUFFER CORRESPONDING TO THE CURRENT MICB IS SET TO ZEROES 24600019 * INTERVENTION REQUIRED BIT-X'08'-SET ON IF DEVICE NOT READY 24900019 * WRITE DELAY BUFFER - SET TO ONES 25200019 * 25500019 *EXTERNAL ROUTINES - SVC 00 (EXCP) FOR PCU AND SCU. 25800019 * 26100019 *EXITS NORMAL - RETURN TO READ MODULE 26400019 * 26700019 *EXITS ERROR - NONE 27000019 * 27300019 *TABLES/WORKAREAS - NONE 27600019 * 27900019 *ATTRIBUTES - REENTERABLE 28200019 * 28500019 *NOTES - NONE 28800019 * 29100019 * 29400019 * 29700019 * 30000019 * SYMBOLIC DEFINITIONS OF REGISTERS 30300019 PARMREG EQU 1 30600019 R1 EQU PARMREG 30700019 DCBREG EQU 2 BASE REGISTER FOR DCB 30900019 MICBREG EQU 4 BASE REGISTER FOR MICB 31200019 PCUIOBR EQU 5 CONTAINS PCU IOB ADDRESS 31500019 SCUIOBR EQU 6 CONTAINS SCU IOB ADDRESS 31800019 WRKREG7 EQU 7 32100019 CCWPNTR EQU 8 CCW STRING POINTER 32400019 WRKREG9 EQU 9 32700019 WRKREG10 EQU 10 33000019 BASEREG EQU 11 BASE REGISTER FOR THIS ROUTINE 33300019 RTNREG EQU 14 CONTAINS RETURN ADDRESS 33600019 ENTRYREG EQU 15 ENTRY POINT REGISTER 33900019 * 34200019 * SYMBOLIC DEFINITIONS FOR DISPLACEMENTS 34500019 * 34800019 CCWADDR EQU 24 DISP TO CCW ADDR IN IOB 35100019 COMNDCHN EQU 4 DISP TO COMMAND CHAIN BIT IN CCW 35400019 DEBUCBAD EQU 36 DISP TO SCU UCB ADDR IN DEB 35700019 ECBDISP EQU 4 DISP TO ECB IN IOB 36000019 IOBDISP EQU 8 DISP TO IOB FROM IOB PREFIX 36300019 NXTCCW EQU 8 DISP TO NEXT CCW IN STRING 36600019 NXTSENS EQU 24 DISP TO NEXT MSENSE CCW 36900019 RITEDLAY EQU 152 DISP TO WRITE DELAY BUFF 37200019 SCUCCW EQU 80 DISP TO SCU CCW FROM PCU CCW 37500019 SCUIOB EQU 48 DISP TO SCU IOB FROM PCU IOB 37800019 UCBFL1 EQU 6 DISP TO UCB DEVICE STATUS BYTE 38100019 ZERODISP EQU 0 DISP OF ZERO 38400019 NOPDIS EQU 16 DISP TO NOP IN SCU CCW CHAIN 38500019 * 38700019 * MISC DEFINITIONS 39000019 * 39300019 CCOFF EQU X'BF' SET COMMAND CHAIN BIT OFF 39600019 CMNDCHN EQU X'40' USED TO SET COMMAND CHAIN ON 39900019 CNTR EQU 1 COUNTER 40200019 CONTROL EQU X'08' CONTROL ROUTINE BEEN ENTERED 40500019 DVICERDY EQU X'40' DEVICE READY FOR PROCESSING 40800019 ENDCNT EQU 3 MAXIMUM TIMES THRU COUNTED LOOP 41100019 ENGAGE EQU X'7F' ENGAGE FOR THIS BUFFER BIT 41400019 ENGAGECC EQU X'EF' ENGAGE COMMAND CODE 41700019 FOUR EQU 4 42000019 FRSTBUF EQU X'10' SET FIRST BUFFER AFTER ENGAGE 42300019 INITBITS EQU X'67' REINITIALIZE DCBMRFLG 42600019 INTVRQD EQU X'08' BUFFER INTERVENTIN REQ BIT 42900019 MREADCC EQU X'4C' MODIFIED READ COMMAND CODE 43200019 MSENSECC EQU X'24' MSENSE COMMAND CODE 43500019 NOPCC EQU X'03' NO-OP COMMAND CODE 43800019 ONE EQU 1 44100019 ONES EQU X'FF' SET WRITE DELAY BUFERR TO ONES 44400019 ONE27 EQU 127 LENGTH OF WRITE DELAY BUFFER 44700019 PSTCMPLT EQU X'7F' POST EVENT COMPLETE 45000019 SETBITON EQU X'04' SET ON BIT IN DCB- REINITIALIZE 45300019 SETZERO EQU 0 45600019 WTOID EQU X'02' 45900019 ZERO EQU 0 46200019 * 46500019 * 46800019 USING IGG019V2,BASEREG 47100019 USING IHADCB,DCBREG 47400019 USING MICBENTR,MICBREG 47700019 LR BASEREG,ENTRYREG ESTABLISH BASE REGISTER 48000019 L MICBREG,DCBIOBA ESTABLISH BASE REG. FOR MICB 48300019 L WRKREG10,MICBDATA PICK UP ADDR OF CURRENT BUFFER 48600019 L WRKREG9,DCBDEBAD LOAD ADDR OF DEB 48900019 L WRKREG9,DEBUCBAD(WRKREG9) LOAD ADDR OF UCB 49200019 TM UCBFL1(WRKREG9),DVICERDY IS THE DEVICE READY 49500019 BZ EOB010 YES, BRANCH 49800019 TM DCBMRIND,CONTROL CONTROL ROUTINE CAUSE NOT-READY 50100019 BZ EOB010 NO, BRANCH 50400019 XI DCBMRIND,CONTROL SET OFF CONTROL RTN BIT 50700019 OI ZERODISP(WRKREG10),INTVRQD SET ON INTRVNTN REQ BIT 51000019 MVI MICBECB,PSTCMPLT POST AS COMPLETE 51300019 B EOB050 BRANCH AND EXIT EOB 51600019 * 51900019 EOB010 EQU * 52200019 * 52500019 TM DCBMRFLG,WTOID IS THERE A WTO MESSAGE 52800019 BZ EOB020 NO MESSAGE - BRANCH 53100019 L PARMREG,DCBWTOID LOAD WTO ID FOR DOM MACRO 53400019 LA PARMREG,ZERODISP(PARMREG) CLEAR OUT GARBAGE 53500019 DOM MSG=(R1) ISSUE DOM MACRO 53600019 XC DCBWTOID(FOUR),DCBWTOID ZERO THE WTO ID WORD IN DCB 53700019 XI DCBMRFLG,WTOID SET THE WTO BIT TO ZERO 54000019 * 54300019 EOB020 EQU * 54600019 * 54900019 ST MICBREG,DCBWTOID UPDATE MICB ADDRESS FOR PCI 55200019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 55500019 * * 55800019 * SET ECB'S IN SCUIOB AND PCUIOB AND CURRENT BUFFER TO ZERO BEFORE * 56100019 * ISSUING AN ENGAGE. * 56400019 * * 56700019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 57000019 LH WRKREG9,DCBBUFL LOAD LENGTH OF BUFF N. (CURRENT) 57300019 BCTR WRKREG9,ZERO DECREMENT LENGTH TO ZERO BUFF N 57600019 EX WRKREG9,CRNTBUFF ZERO THE CURRENT BUFFER 57900019 MVI MICBECB,SETZERO ZERO CURRENT MICB ECB 58200019 L PCUIOBR,DCBIOBAD PICK UP THE PCU IOB ADDRESS 58500019 XC ECBDISP(FOUR,PCUIOBR),ECBDISP(PCUIOBR) ZERO PCU IOB ECB 58800019 LA SCUIOBR,SCUIOB(PCUIOBR) COMPUTE ADDRESS OF SCUIOB 59100019 XC ECBDISP(FOUR,SCUIOBR),ECBDISP(SCUIOBR) ZERO SCU IOB ECB 59400019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 59700019 * * 60000019 * THE FOLLOWING INSTRUCTIONS UPDATE THE CCW'S IN THE STRING FOR * 60300019 * THE SCU SO AN ENGAGE CAN BE ISSUED TO START THE DEVICE. * 60600019 * * 60900019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 61200019 L CCWPNTR,CCWADDR(PCUIOBR) PICK UP ADDR OF PCU CCW STRING 61500019 LA CCWPNTR,SCUCCW(CCWPNTR) COMPUTE ADDR OF SCU CCW STRING 61800019 ST CCWPNTR,CCWADDR(SCUIOBR) STORE SCU CCW ADDR IN SCU IOB 62100019 LA WRKREG9,MICBSENS PICK UP ADDR OF SCU SENSE BYTE 62400019 ST WRKREG9,ZERODISP(CCWPNTR) UPDTE ADDR IN MSENSE CCW 62700019 MVI ZERODISP(CCWPNTR),MSENSECC RESTORE MSENSE COMMAND CODE 63000019 MVI NOPDIS(CCWPNTR),MREADCC SET FOR COMMAND REJECT 63100019 OI COMNDCHN(CCWPNTR),CMNDCHN SET COMMAND CHAIN ON 63300019 ST WRKREG9,NXTSENS(CCWPNTR) PUT SENSE ADDR IN MSENSE CCW 63600019 MVI NXTSENS(CCWPNTR),MSENSECC RESTORE COMMAND CODE 63900019 NI NXTSENS+COMNDCHN(CCWPNTR),CCOFF TURN OFF COMMAND CHAIN 64200019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 64500019 * * 64800019 * THE FOLLOWING INSTRUCTIONS UPDATE THE CCW'S IN THE STRING FOR * 65100019 * THE PCU SO AN ENGAGE CAN BE ISSUED TO START THE DEVICE. * 65400019 * * 65700019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 66000019 NI MICBFLAG,ENGAGE CLEAR ENGAGE FOR THIS BUFF BIT 66300019 OI MICBFLAG,FRSTBUF SET FIRST BFR AFTER ENGAGE BIT 66600019 L CCWPNTR,CCWADDR(PCUIOBR) PICK UP PCU CCW ADDR 66900019 MVI ZERODISP(CCWPNTR),ENGAGECC SET COMMAND CODE TO ENGAGE 67200019 LA WRKREG10,CNTR ESTABLISH LOOP COUNTER 67500019 LA WRKREG7,ENDCNT ESTABLISH MAXIMUM TIME THRU LOOP 67800019 * 68100019 EOB030 EQU * 68400019 * 68700019 LA CCWPNTR,NXTCCW(CCWPNTR) INCREMENT CCW POINTER 69000019 L WRKREG9,MICBDATA PICK UP ADDRESS OF BUFFER 69300019 AH WRKREG9,DCBBUFL ADD BFR LNG TO POINT TO LAST 69600019 BCTR WRKREG9,ZERO BYTE FOR READ BACKWARDS. 69900019 ST WRKREG9,ZERODISP(CCWPNTR) PUT DATA ADDR IN MREAD CCW 70200019 MVI ZERODISP(CCWPNTR),MREADCC RESTORE MREAD COMMAND CODE 70500019 LA CCWPNTR,NXTCCW(CCWPNTR) INCREMENT CCW POINTER 70800019 LA WRKREG9,MICBSENS+ONE PICK UP ADDR OF PCU SENSE BYTES 71100019 ST WRKREG9,ZERODISP(CCWPNTR) STORE ADDR IN MSENSE CCW 71400019 MVI ZERODISP(CCWPNTR),MSENSECC RESTORE MSENSE COMMAND CODE 71700019 CR WRKREG10,WRKREG7 PROCESSED ALL CCW'S 72000019 BE EOB040 YES, BRANCH 72300019 LA CCWPNTR,NXTCCW(CCWPNTR) INCREMENT CCW POINTER 72600019 MVI ZERODISP(CCWPNTR),NOPCC SET COMMAND CODE TO NO-OP 72900019 L MICBREG,MICBNEXT PICK UP ADDR OF NEXT MICB 73200019 LA WRKREG10,CNTR(WRKREG10) INCREMENT LOOP COUNTER 73500019 B EOB030 BRANCH TO UPDATE NEXT 3 CCWS. 73800019 * 74100019 EOB040 EQU * 74400019 * 74700019 L CCWPNTR,CCWADDR(PCUIOBR) LOAD PCU CCW ADDR 75000019 LA CCWPNTR,RITEDLAY(CCWPNTR) COMPUTE ADDR OF WRITE BUFFER 75300019 MVI ZERO(CCWPNTR),ONES * SET THE WRITE DELAY * 75600019 MVC ONE(ONE27,CCWPNTR),ZERO(CCWPNTR) * BUFFER TO ONES * 75900019 LA WRKREG9,IOBDISP LOAD DISP TO IOB FROM PREFIX 76200019 AR PCUIOBR,WRKREG9 COMPUTE PCU IOB ADDR 76500019 AR SCUIOBR,WRKREG9 COMPUTE SCU IOB ADDR 76800019 MVI DCBAPPIN,SETZERO SET DCBAPPIN TO ZEROES 77100019 NI DCBMRFLG,INITBITS RE-INITIALIZE BITS IN THE DCB 77400019 OI DCBMRFLG,SETBITON RE-INITIALIZE BITS IN THE DCB 77700019 EXCP (5) ISSUE EXCP FOR PCU 78000019 EXCP (6) ISSUE EXCP FOR SCU 78300019 * 78600019 EOB050 EQU * 78900019 * 79200019 BR RTNREG RETURN TO READ MODULE 79500019 * 79800019 * 80100019 * THE FOLLOWING INSTRUCTION IS USED TO ZERO THE CURRENT BUFFER 80400019 CRNTBUFF XC ZERO(ZERO,WRKREG10),ZERO(WRKREG10) 80700019 * 81000019 DS 30C RESERVED FOR MODIFICATIONS 81300019 DCBD DSORG=BS,DEVD=MR 81600019 * MICBD - DUMMY SECTION FOR THE MICB 81650019 MICBENTR DSECT 81700019 MICBNEXT DS A 81750019 MICBECB DS A 81800019 MICBFLAG DS AL1 81850019 MICBSENS DS AL3 81900019 MICBECBA DS A 81950019 MICBNM7 DS A 82000019 MICBNM1 DS A 82050019 MICBDATA DS A 82100019 END 82200019 ./ ADD SSI=00050430,NAME=IGG019V3,SOURCE=0 TITLE 'IGG019V3 - 1419 AND 1275 CHECK ROUTINE' 00300019 IGG019V3 CSECT 00600019 * 00900019 * 01200019 *STATUS - CHANGE LVL 000 VERSION LVL 000 MODIFICATION LVL 000 01500019 * 01800019 *FUNCTION - CHECK ROUTINE FOR 1419 AND 1275. 02100019 * 1-ZERO OUT ECB IN DECB'S. 02400019 * 2-DETERMINE IF AN I/O OPERATION HAS BEEN POSTED COMPLETE 02700019 * FOR ANY OF THE CHAINED DECB'S. 03000019 * 3-IF NONE ARE POSTED-CONSTRUCT A PARAMETER LIST OF ECB 03300019 * ADDRESSES TO BE PASSED TO WAIT. 03600019 * 4-WAIT FOR AN I/O OPERATION TO BE POSTED. 03900019 * 5-DETERMINE WHICH DECB IT WAS POSTED FOR. 04200019 * 6-DETERMINE IF THE OPERATION COMPLETED WITHOUT AN ERROR 04500019 * 7-IF AN I/O ERROR OCCURRED THEN: 04800019 * A-DETERMINE IF IT WAS ON THE PCU OR SCU. 05100019 * B-IF NO SYNAD IS PRESENT CALL EOV (SVC 55) TO ABEND 05400019 * C-BRANCH TO USER'S SYNAD ROUTINE 05700019 * D-ZERO MICBECB SO COMPLETE BIT WILL BE OFF 06000019 * 8-IF THE I/O OPERATION COMPLETED SUCCESSFULLY THEN 06300019 * UPDATE THE MICB(READ) POINTER. 06600019 * 06900019 *ENTRY POINT - IGG019V3 FROM THE CHECK MACRO EXPANSION 07200019 * AN EXAMPLE OF THE EXPANSION IS: 07500019 * LA 1,DECB LOAD ADDR OF DECB 07800019 * L 14,8(15) PICK UP DCB ADDR 08100019 * L 15,52(14) PICK UP MODULE ADDR 08400019 * BALR 14,15 BRANCH TO MODULE 08700019 * 09000019 *INPUT - PARAMETER LIST OF DECB ADDRESSES 09300019 * DECB 09600019 * DECB+4 - POINTER TO NEXT DECB 09900019 * DECB+8 - DCB ADDRESS 10200019 * DCB 10500019 * DCBECBLT - ADDRESS OF ECB LIST AREA 10800019 * DCBIOBA - ADDRESS OF MICB 11100019 * DCBIOBAD - ADDRESS OF IOB 11400019 * DCBSYNAD - ADDRESS OF USER'S SYNAD ROUTINE 11700019 * MICB 12000019 * MICBNEXT - ADDRESS OF NEXT MICB 12300019 * MICBECB - X'7F' - SUCCESSFUL I/O OPERATION 12600019 * X'40' - ERROR ON THE I/O OPERATION 12900019 * MICBECB+3- X'01' ERROR POSTED IS ON SCU 13200019 * BUFFER 13500019 * BYTE 0 - X'18' - UNIT EXCEPTION OR INTERVENTION REQUIRED 13800019 * 14100019 *OUTPUT - DECB 14400019 * DECB+0 - ECB POSTED 14700019 * DCB 15000019 * DCBIOBA - ADDRESS OF MICB (UPDATED TO NEXT MICB) 15300019 * MICB 15600019 * MICBECB - X'7F' SUCCESSFUL I/O OPERATION (COMPLETION CODE) 15900019 * X'40' ERROR ON THE I/O OPERATION (COMPLETION CODE) 16200019 * X'01' LOW ORDER BIT IN ECB - ERROR ON SCU 16500019 * MICBFLAG - X'80' ENGAGE NECESSARY FOR THIS BUFFER BIT SET ON 16800019 * X'10' - FIRST BUFFER AFTER ENGAGE BIT SET OFF 17100019 * RETURN CODES 17400019 * X'00' - I/O OPERATION COMPLETED SUCCESSFULLY 17700019 * X'04' - ERROR ON I/O OPERATION 18000019 * 18300019 *EXTERNAL ROUTINES - SVC 55 (EOV) 18600019 * SVC 01 (WAIT) 18900019 * USER'S SYNAD ROUTINE 19200019 * 19500019 *EXITS NORMAL - RETURN TO USER. 19800019 * 20100019 *EXITS ERROR - ABEND 001 IF THE USER FAILS TO SPECIFY A SYNAD ROUTINE. 20400019 * 20700019 *TABLES/WORKAREAS - NONE 21000019 * 21300019 *ATTRIBUTES - REENTERABLE 21600019 * 21900019 *NOTES - THE USER CAN ONLY HAVE A MAXIMUM OF 16 DEVICES CONNECTED TO 22200019 * ONE CPU. HENCE IF MORE THAN 16 DECB'S ARE PRESENT ONLY THE 22500019 * FIRST 16 WILL BE PROCESSED. 22800019 * 23100019 * 23400019 * 23700019 * SYMBOLIC DEFINITIONS OF REGISTERS 24000019 * 24300019 REGZERO EQU 0 24600019 PARMR EQU 1 CONTAINS ADDR OF FIRST DECB 24900019 DCBR EQU 2 DCB ADDRESS 25200019 ECBR EQU 3 ADDRESS OF ECB PARAMETER LIST 25500019 BASER EQU 4 BASE REGISTER 25800019 DECBR EQU 5 DECB ADDRESS 26100019 INDEXR EQU 6 INDEX REGISTER 26400019 MICBR EQU 7 MICB ADDRESS 26700019 REG8 EQU 8 27000019 REG9 EQU 9 27300019 REG10 EQU 10 27600019 SAVER EQU 13 ADDRESS OF SAVE AREA 27900019 RETURNR EQU 14 RETURN ADDRESS 28200019 ENTRYR EQU 15 ENTRY POINT ADDR & RETURN CODES 28500019 * 28800019 * SYMBOLIC DEFINITIONS FOR DISPLACEMENTS 29100019 * 29400019 DECBADR EQU 4 DISP TO ADDR OF NEXT DECB 29700019 DECBDCB EQU 8 DISP TO DCB ADDR IN DECB 30000019 DECBIOB EQU 16 DISP TO IOB ADDR IN DECB 30300019 IOBSENS EQU 20 DISP TO CSW SENSE INFO IN IOB 30600019 REG1DSP EQU 24 DISP TO SAVE AREA OF REG 1 30900019 RTNDSP EQU 16 DISP TO SET RETURN CODE 31200019 SAVEDISP EQU 12 DISP TO SAVE AREA 31500019 SCUIOB EQU 48 DISP OF SCU IOB FROM PCU IOB 31800019 SIXTY4 EQU 64 DISP TO SAVE DECBR AND BASER 32100019 SVEPRMS EQU 20 DISP TO SAVE SVC PARAMETERS 32400019 TWNTY8 EQU 28 DISP TO USER REGS FOR SYNAD 32700019 ZEROD EQU 0 ZERO DISPLACEMENT 33000019 * 33300019 * MISC DEFINITIONS 33600019 * 33900019 BUFFMPTY EQU X'18' UNIT EXCPTN OR INTRVNTN REQ 34200019 DCBALTER EQU X'10' DCB ALTERED--SET ON FOR CLOSE 34500019 FOUR EQU 4 34800019 FRSTENG EQU X'EF' SET OFF FRST BUFF AFTER ENGAGE 35100019 IOERROR EQU X'41' 35400019 INDXINCR EQU 4 INDES REGISTER INCREMENT 35700019 LISTEND EQU X'80' END OF PARAMETER LIST 36000019 MAXDEVCE EQU 16 MAXIMUM DEVICES SUPPORTED 36300019 NOSYNAD EQU X'01' ABEND COMPLETION CODE - NO SYNAD 36600019 PSTDCMPL EQU X'40' ECB COMPLETE BIT ON 36900019 SCUERROR EQU X'01' ECB - ERROR ON SCU 37200019 SETON EQU X'80' ENGAGE NECESSARY ON THIS BUFFER 37500019 SHIFT12 EQU 12 SHIFT ABEND COMPLETION CODE 37800019 SIX4 EQU 64 38100019 SYNDRTN EQU X'01' 38400019 THREE EQU 3 38700019 UNITEXCP EQU X'FE' UNIT EXCEPTION BIT TO 0 FOR EOV 39000019 X7FPSTD EQU X'7F' ECB - SUCCESSFUL COMPLETION 39300019 ZERO EQU 0 39600019 OFFREQ EQU X'DF' TURN OFF USER REQUEST FLAG 39700019 * 39900019 * 40200019 USING IGG019V3,BASER 40500019 USING IHADCB,DCBR 40800019 USING MICBENTR,MICBR 41100019 STM RETURNR,REG10,SAVEDISP(SAVER) SAVE USER'S REGISTERS 41400019 LR BASER,ENTRYR ESTABLISH BASE REGISTER 41700019 SR INDEXR,INDEXR INITALIZE INDEX REGISTER 42000019 LR DECBR,PARMR LOAD THE DECB ADDR 42300019 LR REG10,DECBR SAVE THE ADDR OF THE FIRST DECB 42600019 L DCBR,DECBDCB(DECBR) PICK UP ADDR OF DCB FROM DECB 42900019 L ECBR,DCBMRIND PICK UP ADDR OF ECB LIST AREA 43200019 XC ZERO(SIX4,ECBR),ZERO(ECBR) ZERO ECB LIST AREA 43500019 SR PARMR,PARMR INITALIZE REGISTER 43800019 LA REG9,MAXDEVCE MAXIMUM MICR DEVICES SUPPORTED 44100019 * 44400019 CHCK010 EQU * 44700019 * 45000019 ST PARMR,ZEROD(DECBR) ZERO OUT ECB IN THE DECB 45300019 L MICBR,DCBIOBA PICK UP ADDRESS OF MICB 45600019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 45900019 * * 46200019 * IF THE ECB IS NOT POSTED COMPLETE FOR THE MICB - PUT ITS ADDRESS * 46500019 * IN THE ECB PARAMETER LIST AND WAIT FOR THE EVENT TO COMPLETE * 46800019 * * 47100019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 47400019 TM MICBECB,PSTDCMPL EVENT POSTED COMPLETE 47700019 BO CHCK040 YES, BRANCH 48000019 LA REG8,MICBECB NO, PICK UP MICB ECB ADDR 48300019 ST REG8,ZEROD(INDEXR,ECBR) PUT THIS ADDR IN ECB ADDR LIST 48600019 C PARMR,DECBADR(DECBR) IS THIS THE LAST DECB 48900019 BE CHCK020 YES,BRANCH 49200019 LA INDEXR,INDXINCR(INDEXR) NO, UPDATE INDX FOR NEXT DECB 49500019 L DECBR,DECBADR(DECBR) PICK UP ADDR OF NEXT DECB 49800019 L DCBR,DECBDCB(DECBR) PICK UP DCB ADDR FROM DECB 50100019 BCT REG9,CHCK010 MORE THAN 16 DEVICES NO, BRANCH 50400019 * 50700019 CHCK020 EQU * 51000019 * 51300019 AR INDEXR,ECBR COMPUTE ADDR OF LAST ECB ADDR 51600019 MVI ZEROD(INDEXR),LISTEND SET HIGH-ORDER BIT TO ONE 51900019 LR PARMR,ECBR PUT ECB PARMLIST ADDR IN REG 1 52200019 WAIT 1,ECBLIST=(1) WAIT FOR ONE EVENT TO COMPLETE 52500019 SR INDEXR,INDEXR INITALIZE INDEX REGISTER 52800019 LR DECBR,REG10 LOAD ADDR OF FIRST DECB 53100019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 53400019 * * 53700019 * DETERMINE WHICH ECB WAS POSTED COMPLETE * 54000019 * * 54300019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 54600019 * 54900019 CHCK030 EQU * 55200019 * 55500019 L REG8,ZEROD(INDEXR,ECBR) PICK UP MICB ECB ADDR 55800019 TM ZEROD(REG8),PSTDCMPL IS THIS ECB POSTED COMPLETE 56100019 BO CHCK040 YES, BRANCH 56400019 LA INDEXR,INDXINCR(INDEXR) NO, INCREMENT INDEX REGISTER AND 56700019 L DECBR,DECBADR(DECBR) PICK UP ADDR OF NEXT DECB 57000019 B CHCK030 BRANCH TO LOOK AT NEXT ECB 57300019 * 57600019 CHCK040 EQU * 57900019 * 58200019 L DCBR,DECBDCB(DECBR) PICK UP DCB ADDR FROM DECB 58500019 L MICBR,DCBIOBA PICK UP MICB ADDR 58800019 NI MICBFLAG,FRSTENG SET OFF FIRST BUFF AFTER ENGAGE 59100019 MVC ZEROD(FOUR,DECBR),MICBECB MOVE ECB TO DECB FROM MICB 59400019 CLI MICBECB,X7FPSTD SUCCESSFULL COMPLETION POSTED 59700019 BNE CHCK050 NO, BRANCH 60000019 L REG9,MICBDATA LOAD ADDR OF CURRENT BUFFER 60300019 TM ZEROD(REG9),BUFFMPTY UNIT EXCEP OR INTERVENTION REQ 60600019 BZ CHCK041 NO, BRANCH 60900019 NI DCBMRFLG,OFFREQ TURN OFF FLAG FOR USER DISEN REQUEST 61000019 OI MICBFLAG,SETON SET ENGAGE NECESSARY BIT ON 61200019 XC MICBECB(FOUR),MICBECB ZERO ECB IN MICB 61500019 B CHCK042 BRANCH TO SET RETURN CODE 61800019 * 62100019 CHCK041 EQU * 62400019 * 62700019 L REG8,MICBNEXT PICK UP ADDR OF NEXT MICB 63000019 ST REG8,DCBIOBA STORE IT IN THE DCB 63300019 * 63600019 CHCK042 EQU * 63900019 * 64200019 SR ENTRYR,ENTRYR 64500019 ST ENTRYR,RTNDSP(SAVER) SET RETURN CODE - SUCCESSFUL 64800019 B CHCK090 BRANCH TO LOAD THE REGS AND EXIT 65100019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 65400019 * * 65700019 * DETERMINE IF I/O ERROR WAS ON PCU OR SCU. IF IT WAS ON THE SCU * 66000019 * CHANGE DCB AND DECB TO SCU IOB PREFIX ADDR AND SCU IOB ADDR. * 66300019 * * 66600019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 66900019 * 67200019 CHCK050 EQU * 67500019 * 67800019 OI MICBFLAG,SETON SET ENGAGE NECESSARY BIT ON 68100019 LR PARMR,DCBR SET UP DCB PARAMETER FOR SVC 68400019 L REG8,DCBIOBAD PICK UP PCU IOB ADDR 68700019 CLI MICBECB+THREE,SCUERROR ERROR ON SCU 69000019 BNE CHCK060 NO, BRANCH ERROR IS ON PCU 69300019 LA REG8,SCUIOB(REG8) COMPUTE SCU IOB PREFIX ADDR 69600019 ST REG8,DCBIOBAD STORE SCU IOB PREFIX ADDR IN DCB 69900019 L REG9,DECBIOB(DECBR) LOAD PCU IOB ADDR FROM DECB 70200019 LA REG9,SCUIOB(REG9) COMPUTE SCU IOB ADDR 70500019 ST REG9,DECBIOB(DECBR) STORE SCU IOB ADDR IN DECB 70800019 OI DCBMRIND,DCBALTER SET BIT ON TO SHOW DCB ALTERED 71100019 * 71400019 CHCK060 EQU * 71700019 * 72000019 CLI DCBSYNAD+THREE,SYNDRTN SYNAD ROUTINE PRESENT 72300019 BNE CHCK070 YES, BRANCH 72600019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 72900019 * * 73200019 * IF NO SYNAD ROUTINE IS SPECIFIED GO TO EOV (SVC 55) TO ABNORMALLY * 73500019 * TERMINATE THE JOB. * 73800019 * * 74100019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 74400019 LA REGZERO,NOSYNAD SET UP REG FOR ABEND - NO SYNAD 74600019 SLL REGZERO,SHIFT12 SHIFT ABEND CODE 12 BITS FOR EOV 74800019 NI IOBSENS(REG8),UNITEXCP SET UNIT EXCEPTION BIT OFF 75000019 EOV (1) 75300019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 75600019 * * 75900019 * IF THE SYNAD IS SPECIFIED--SET UP PARAMTERS AND REGISTERS BEFORE * 76200019 * BRANCHING TO THE SYNAD ROUTINE. RESTORE IF USER RETURNS CONTROL. * 76500019 * * 76800019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 77100019 * 77400019 CHCK070 EQU * 77700019 * 78000019 MVI FOUR(REG8),IOERROR POST IOB ECB FOR SYNAD 78300019 LR REGZERO,DECBR DECB ADDR IN REG 0 FOR SYNAD 78600019 L REG9,INPUTBIT PICK UP FLAG FOR PARM REG 78900019 LR PARMR,DCBR DCB ADDR IN REG 1 FOR SYNAD 79200019 LA PARMR,ZEROD(PARMR) CLEAR HIGH ORDER BYTE IN REG 1 79500019 AR PARMR,REG9 SET FLAGS ON IN HIGH ORDER BYTE 79800019 STM BASER,DECBR,SIXTY4(SAVER) SAVE DECB ADDR AND BASE REG 80100019 L ENTRYR,DCBSYNAD PICK UP ADDR OF SYNAD RTN 80400019 LM DCBR,REG10,TWNTY8(SAVER) LOAD USER REGS 80700019 BALR RETURNR,ENTRYR BRANCH TO USER SYNAD RTN 81000019 STM DCBR,REG10,TWNTY8(SAVER) SAVE USER REGS 81300019 LM BASER,DECBR,SIXTY4(SAVER) LOAD DECB ADDR AND BASE REG 81600019 L DCBR,DECBDCB(DECBR) LOAD DCB ADDR FROM DECB 81900019 TM DCBMRIND,DCBALTER ERROR ON SCU 82200019 BZ CHCK080 NO, BRANCH 82500019 L REG8,DCBIOBAD LOAD IOB PREFIX ADDR FRO DCB 82800019 LA REG9,SCUIOB LOAD DISP FROM PCU TO SCU IOB 83100019 SR REG8,REG9 COMPUTE ADDR OF PCU IOB 83400019 ST REG8,DCBIOBAD STORE PCU IOB PREFIX ADDR IN DCB 83700019 L REG8,DECBIOB(DECBR) LOAD IOB ADDR FROM DECB 84000019 SR REG8,REG9 COMPUTE IOB ADDR FOR DECB 84300019 ST REG8,DECBIOB(DECBR) STORE PCU IOB ADDR IN DECB 84600019 XI DCBMRIND,DCBALTER SET BIT OFF TO SHOW DCB RESTORED 84900019 * 85200019 CHCK080 EQU * 85500019 * 85800019 L MICBR,DCBIOBA LOAD ADDRESS OF MICB 85900019 XC MICBECB(FOUR),MICBECB ZERO ECB IN MICB 86100019 LA ENTRYR,FOUR LOAD RETURN CODE 86400019 ST ENTRYR,RTNDSP(SAVER) SET RETURN CODE 86700019 * 87000019 CHCK090 EQU * 87300019 * 87600019 ST DECBR,REG1DSP(SAVER) PUT DECB ADDR IN REG 1 SAVE AREA 87900019 LM RETURNR,REG10,SAVEDISP(SAVER) LOAD THE USER'S REGS 88200019 BR RETURNR RETURN TO USER 88500019 DS 0F 88800019 INPUTBIT DC X'80000000' INPUT ERROR BIT SET ON IN 1 89100019 DS 34C RESERVED FOR MODIFICATIONS 89400019 DCBD DSORG=BS,DEVD=MR 89700019 * MICBD - DUMMY SECTION FOR THE MICB 89750019 MICBENTR DSECT 89800019 MICBNEXT DS A 89850019 MICBECB DS A 89900019 MICBFLAG DS AL1 89950019 MICBSENS DS AL3 90000019 MICBECBA DS A 90050019 MICBNM7 DS A 90100019 MICBNM1 DS A 90150019 MICBDATA DS A 90200019 END 90300019 ./ ADD SSI=00053280,NAME=IGG019V4,SOURCE=0 TITLE 'IGG019V4 - 1419 AND 1275 CONTROL ROUTINE' 00300019 IGG019V4 CSECT 00600019 * 00900019 * 01200019 *STATUS CHANGE LVL 000, VERSION LVL 000, MODIFICATION LVL 000 01500019 * 01800019 *FUNCTION - DISENGAGE AND POCKET LITE ROUTINES FOR 1419 AND 1275. 02100019 * 1- IF DISENGAGE IS REQUESTED THE ROUTINE SETS FLAGS IN THE 02400019 * DCB SO THE PCI APPENDAGE CAN DISENGAGE THE DEVICE. 02700019 * 2- IF LITE IS REQUESTED THE ROUTINE: 03000019 * A- DETERMINES IF THE DEVICE IS DISENGAGED 03300019 * B- CHECKS THE TWO BYTE POCKET LITE BUCKET AREA TO 03600019 * DETERMINE WHICH LIGHTS TO TURN ON 03900019 * C- STARTS THE CHANNEL PROGAM TO TURN THE LIGHTS ON. 04200019 * D- CHECKS TO SEE THE CCW STRING EXECUTED SUCCESSFULLY. 04500019 * E- IF AN ERROR OCCURRED BRANCH TO THE USER'S SYNAD 04800019 * ROUTINE. (IF NO SYNAD IS AVAILABLE AN ABEND IS ISSUED) 05100019 *ENTRY POINT - IGG019V4 FROM THE MACRO EXPANSION. 05400019 * AN EXAMPLE OF THE EXPANSION IS: 05700019 * BAL 1,*+12 LOAD ADDRESS OF PARAMETER LIST 06000019 * DC A(DCB) DCB ADDRESS 06300019 * DC A(LITE-BUCKET) LITE-BUCKET ADDRESS 06600019 * L 14,0(1,0) LOAD DCB ADDRESS 06900019 * L 15,84(14,0) LOAD ROUTINE ADDRESS 07200019 * BALR 14,15 FOR LITE (BAL 14,4(15) FOR DESENGAGE) 07500019 * 07800019 *INPUT - DCB 08100019 * DCBMRIND - X'08' CONTROL ROUTINE ENTERED BIT SET ON 08400019 * DCBIOBAD - PCU IOB ADDRESS 08700019 * DCBSYNAD - SYNAD ROUTINE ADDRESS 09000019 * SCU IOB 09300019 * 16(SCUIOBR) - SCU CCW STRING ADDRESS 09600019 * 4(SCUIOBR) - SCU ECB ADDRESS 09900019 * POCKET LITE BUCKET- 10200019 * TWO BYTES SUPPLIED BY USER. (CONTAINS BITS INDICATING 10500019 * WHICH LITES ARE TO BE TURNED ON) 10800019 * 11100019 *OUTPUT -DCB 11400019 * DCBMRFLG-X'30' - DISENGAGE REQUESTED BY USER 11700019 * POCKET LITE BUCKET- 12000019 * BYTE 2, BIT 7 IS SET ON IF THE DEVICE IS NOT DISENGAGED 12300019 * WHEN THE USER REQUESTS POCKET LIGHTS TO BE TURNED OR 12600019 * IF AN ERROR OCCURRED IN THE CCW STRING TO TURN ON THE 12900019 * LIGHTS. 13200019 * RETURN CODES 13500019 * X'00' - NORMAL COMPLETION-NO I/O ERRORS 13800019 * X'04' - I/O ERROR-SYNAD RETURNED TO CHECK 14100019 * 14400019 * LITE CCW STRING 14700019 * THE COMMAND CODE CORRESPONDING TO THE POCKET LITE TO 15000019 * BE TURNED ON IS OUTPUT FROM THE ROUTINE 15300019 * 15600019 *EXTERNAL ROUTINES - EXCP (SVC 00) 15900019 * WAIT (SVC 01) 16200019 * EOV (SVC 55) 16500019 * USER'S SYNAD ROUTINE 16800019 * 17100019 *EXITS NORMAL - RETURN TO USER VIA REGISTER 14 17400019 * 17700019 *EXITS ERROR - ABEND DUMP IF NO SYNAD ROUTINE IS SPECIFIED 18000019 * 18300019 *TABLES/WORK AREAS-- CALLERS SAVE AREA 18600019 * - POCKET LITE BUCKET (TWO BYTES) 18900019 * 19200019 *ATTRIBUTES - REENTERABLE 19500019 * 19800019 *NOTES - NONE 20100019 * 20400019 * 20700019 * 21000019 * 21300019 * SYMBOLIC DEFINITIONS OF REGISTERS 21600019 * 21900019 ZEROR EQU 0 22200019 REG1 EQU 1 WORK REGISTER 22500019 PARMR EQU 1 22800019 DCBR EQU 2 DCB ADDRESS 23100019 BCKETR EQU 3 POCKET LITE BUCKET ADDRESS 23400019 BASER EQU 4 BASE REGISTER 23700019 PCKTR EQU 5 CONTAINS POCKET COMMAND CODE 24000019 EVENR EQU 6 REGS 6 & 7 ARE USED IN DETER- 24300019 ODDR EQU 7 MINING WHICH POCKET LITE 24600019 SAVER EQU 13 ADDRESS OF SAVE AREA 24900019 RETURNR EQU 14 RETURN ADDRESS 25200019 SCUIOBR EQU 14 SCU IOB ADDRESS 25500019 REG15 EQU 15 WORK REGISTER 25800019 ENTRYR EQU 15 ENTRY POINT ADDR AND RETRUN CODE 26100019 * 26400019 * SYMBOLIC DEFINITIONS FOR DISPLACEMENTS 26700019 * 27000019 BCKTADDR EQU 4 DISP TO PCKT LITE BCKT ADDR 27300019 BCKTBYT1 EQU 1 DISP TO PCKT LITE BYTE 1 27600019 CCWADDR EQU 24 DISP TO CCW ADDR IN IOB 27900019 DISP12 EQU 12 DISP TO REG 14 SAVE AREA 28200019 DISP20 EQU 20 28500019 DISP28 EQU 28 28800019 DISP56 EQU 56 29100019 IOBDISP EQU 8 DISP TO IOB FROM IOB PREFIX 29400019 IOBECB EQU 4 DISP TO ECB IN IOB 29700019 IOBECBAD EQU 12 DISP TO ECB ADDR IN IOB 30000019 LITECC EQU 8 DISP TO CCW FOR LITE COMMAND CDE 30300019 LITECCW EQU 136 DISP FROM PCU CCW TO LITE CCW 30600019 RTNCDSP EQU 16 DISP TO STORE RETURN CODE 30900019 SCUIOB EQU 48 DISP FROM PCU IOB TO SCU IOB 31200019 UNITEXCP EQU 20 DISP TO CSW IN IOB 31500019 ZEROD EQU 0 ZERO DISPLACEMENT 31800019 * 32100019 * MISC DEFINITIONS 32400019 * 32700019 BITSAB EQU 2 SHIFT TO PROC BITS A & B LAST 33000019 DCBALTER EQU X'10' DCB ALTERED--SET ON FOR CLOSE 33300019 ERBITOFF EQU X'FE' SET ERROR BIT OFF 33600019 ERBITON EQU X'01' SET ERROR BIT ON 33900019 EXCPISUD EQU X'20' 34200019 FOUR EQU 4 34500019 FRST6BTS EQU X'04' FIRST 6 LITES PROCESSED 34800019 INITEXCP EQU X'CF' 35100019 LASTEXCP EQU X'10' LAST EXCP INDICATOR 35400019 LFTJSTFY EQU 24 SHIFT TO LEFT JUSTIFY 35700019 LST6BTS EQU 6 SHIFT FOR LAST SIX BITS 36000019 NOSYNAD EQU X'01' SYNAD ROUTINE PRESENT 36300019 SETLITE EQU X'F7' SET CC TO LITE COMMAND CODE 36600019 SETOFF EQU X'FE' 36900019 SETON EQU X'0C' CONTROL RTN-LITES PRCSD BITS 37200019 SHFTOFF EQU 4 SHIFT OFF LOW-ORDER BITS 37500019 SHIFT12 EQU 12 SHIFT ABEND COMPLETION CODE 37800019 TESTBIT EQU 1 TEST THIS BIT 38100019 THREE EQU 3 38400019 USERDISN EQU X'20' USER DISENGAGE BIT 38700019 X7FPSTD EQU X'7F' EVENT POSTED-SUCCESSFUL COMPLETE 39000019 * 39300019 * 39600019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 39900019 * * 40200019 * THIS BRANCH IS TAKEN WHEN LITE IS SPECIFIED IN THE MACRO EXPANSION * 40500019 * * 40800019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 41100019 USING *,ENTRYR ESTABLISH BASE REGISTER 41400019 B CNTL010 BRANCH TO LITE ROUTINE 41700019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 42000019 * * 42300019 * THE DISENGAGE ROUTINE SETS BITS IN THE DCBMRFLG SO THE PCI APPENDAGE* 42600019 * CAN ENGAGE THE DEVICE * 42900019 * * 43200019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 43500019 USING IHADCB,PARMR ESTABLISH BASE REGISTER FOR DCB 43800019 OI DCBMRFLG,USERDISN SET ON DISENGAGE BIT (USER) 44100019 BR RETURNR RETURN CONTROL TO USER 44400019 * 44700019 CNTL010 EQU * 45000019 * 45300019 DROP ENTRYR 45600019 DROP PARMR 45900019 USING IHADCB,DCBR 46200019 USING IGG019V4,BASER 46500019 ST RETURNR,DISP12(SAVER) SAVE RETURN ADDR 46800019 STM DCBR,ODDR,DISP28(SAVER) SAVE USER REGS 47100019 LR BASER,ENTRYR ESTABLISH BASE REGISTER 47400019 L DCBR,ZEROD(PARMR) ESTABLISH BASE REGISTER FOR DCB 47700019 L BCKETR,BCKTADDR(PARMR) PICK UP POCKET LITE BUCKET ADDR 48000019 NI BCKTBYT1(BCKETR),ERBITOFF SET POCKET ERROR BIT TO ZERO 48300019 NI DCBMRFG,INITEXCP INITIALIZE EXCP INDICATOR BITS 48600019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 48900019 * * 49200019 * IF THE DEVICE HAS BEEN DISENGAGED EACH BIT CORRESPONDING TO A POCKET* 49500019 * IS TESTED TO DETERMINE IF THE POCKET LIGHT IS TO BE TURNED ON * 49800019 * * 50100019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 50400019 OI DCBMRIND,SETON SET CNTRL RTN-LITE PRCSD BTS ON 50700019 LH PCKTR,PCKTCC LOAD REG WITH PCKT COMMAND CODE 51000019 SR EVENR,EVENR ZERO REGISTER 51300019 SR ODDR,ODDR ZERO REGISTER 51600019 IC ODDR,ZEROD(BCKETR) PICK UP 1ST BYTE OF LITE BUCKET 51900019 IC EVENR,BCKTBYT1(BCKETR) PICK UP 2ND BYTE OF LITE BUCKET 52200019 SRL EVENR,SHFTOFF SHIFT OFF LOW ORDER BITS-BYTE 2 52500019 SLL ODDR,LFTJSTFY LEFT-JUSTIFY BYTE 1 52800019 SLDL EVENR,BITSAB PUT POCKET LITE BITS A&B IN EVEN 53100019 * 53400019 CNTL020 EQU * 53700019 * 54000019 LTR ODDR,ODDR IS THIS BIT ONE (ON) 54300019 BM CNTL060 YES, BRANCH TO TURN ON LIGHT 54600019 * 54900019 CNTL030 EQU * 55200019 * 55500019 TM DCBMRIND,FRST6BTS FIRST 6 LITE BITS PROCESSED 55800019 BO CNTL040 NO, BRANCH 56100019 L REG1,SCNDTST LOAD TEST REG FOR LAST 6 BITS 56400019 B CNTL050 BRANCH TO SHIFT FOR NEXT BIT 56700019 * 57000019 CNTL040 EQU * 57300019 * 57600019 LH REG1,FIRSTST LOAD TEST REG FOR FIRST 6 BITS 57900019 * 58200019 CNTL050 EQU * 58500019 * 58800019 TM DCBMRFG,EXCPISUD EXCP BEEN ISSUED 59100019 BZ CNTL051 NO, BRANCH TO SHIFT NEXT BIT 59400019 XI DCBMRFG,EXCPISUD YES, SET OFF INDICATOR 59700019 B CNTL052 SKIP THE SHIFT 60000019 * 60300019 CNTL051 EQU * 60600019 * 60900019 SLL ODDR,TESTBIT SHIFT TO TEST THE NEXT BIT 61200019 * 61500019 CNTL052 EQU * 61800019 * 62100019 AH PCKTR,NXTPCKT UPDATE COMMAND CODE REGISTER 62400019 CR PCKTR,REG1 FIRST 6 BITS TESTED 62700019 BNE CNTL020 NO, BRANCH TO TEST ANOTHER ONE 63000019 CL REG1,SCNDTST HAVE ALL LIGHT BITS BEEN PROCD 63300019 BE CNTL080 YES, BRANCH TO EXIT THIS ROUTINE 63600019 XI DCBMRIND,FRST6BTS SET OFF FIRST 6 BITS INDICATOR 63900019 SRDL EVENR,LST6BTS LAST 6 BITS IN ODD REG TO PROC 64200019 B CNTL020 BRANCH TO TEST LAST 6 BITS 64500019 * 64800019 CNTL060 EQU * 65100019 * 65400019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 65700019 * * 66000019 * THE FOLLOWING INSTRUCTIONS CAUSE THE LIGHTS TO BE TURNED ON * 66300019 * * 66600019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 66900019 XI DCBMRFG,EXCPISUD SET ON EXCP ISSUED BIT 67200019 SLL ODDR,TESTBIT SHIFT TO TEST THE NEXT BIT 67500019 LTR ODDR,ODDR ANY MORE POCKET LITES TO LITE 67800019 BC 7,CNTL061 YES, BRANCH 68100019 LTR EVENR,EVENR ANY MORE POCKET LITES TO LITE 68400019 BC 7,CNTL061 YES, BRANCH 68700019 XI DCBMRFG,LASTEXCP NO, SET LAST EXCP INDICATOR 69000019 * 69300019 CNTL061 EQU * 69600019 * 69900019 L SCUIOBR,DCBIOBAD PICK UP PCU IOB PREFIX ADDRESS 70200019 L REG15,CCWADDR(SCUIOBR) PICK UP PCU CCW STRING ADDR 70500019 LA REG15,LITECCW(REG15) COMPUTE LITE CCW STRING ADDR 70800019 LA SCUIOBR,SCUIOB(SCUIOBR) COMPUTE SCU IOB PREFIX ADDRESS 71100019 ST REG15,CCWADDR(SCUIOBR) PUT CCW ADDR IN SCU IOB 71400019 STC PCKTR,LITECC(REG15) PUT COMMAND CODE IN CCW STRING 71700019 NI LITECC(REG15),SETLITE SET OFF BATCH NUMBER UPDATE BIT 72000019 XC IOBECB(FOUR,SCUIOBR),IOBECB(SCUIOBR) ZERO SCU IOB ECB 72300019 LA PARMR,IOBDISP(SCUIOBR) COMPUTE SCU IOB ADDRESS 72600019 EXCP (1) 72900019 L SCUIOBR,DCBIOBAD PICK UP PCU IOB ADDRESS 73200019 LA SCUIOBR,SCUIOB(SCUIOBR) COMPUTE SCU IOB ADDRESS 73500019 L PARMR,IOBECBAD(SCUIOBR) LOAD ECB ADDR 73800019 WAIT 1,ECB=(1) 74100019 L SCUIOBR,DCBIOBAD LOAD SCUIOB PREFIX ADDR 74400019 LA SCUIOBR,SCUIOB(SCUIOBR) COMPUTE SCU IOB ADDR 74700019 CLI IOBECB(SCUIOBR),X7FPSTD EVENT SUCCESSFULLY COMPLETED 75000019 BE CNTL030 YES, TEST THE NEXT BIT 75300019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 75600019 * * 75900019 * IF AN ERROR OCCURS IN THE I/O OPERATION TO CAUSE THE LIGHT TO BE * 76200019 * TURNED ON THE USER'S SYNAD ROUTINE IS BRANCHED TO. IF THERE IS * 76500019 * NO SYNAD ROUTINE THE JOB IS TERMINATED VIA EOV (SVC 55). * 76800019 * * 77100019 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 77400019 OI BCKTBYT1(BCKETR),ERBITON NO, SET ERROR BIT ON 77700019 TM DCBSYNAD+THREE,NOSYNAD SYNAD ROUTINE PRESENT 78000019 BZ CNTL070 YES, BRANCH 78300019 LA ZEROR,NOSYNAD SET UP REG FOR ABEND - NO SYNAD 78500019 SLL ZEROR,SHIFT12 SHIFT ABEND CODE 12 BITS FOR EOV 78700019 NI UNITEXCP(SCUIOBR),SETOFF SET OFF UNIT EXCEPTION BIT 78900019 EOV (2) 79200019 * 79500019 CNTL070 EQU * 79800019 * 80100019 OI DCBMRIND,DCBALTER SET BIT ON TO SHOW DCB ALTERED 80400019 ST SCUIOBR,DCBIOBAD STORE SCUIOB PREFIX ADDR IN DCB 80700019 LR PARMR,DCBR SET UP PARAMETERS 81000019 SR ZEROR,ZEROR FOR SYNAD 81300019 L REG15,CNTRLBIT LOAD CONTROL BIT FOR REG 1 81600019 LA PARMR,ZEROD(PARMR) CLEAR HIGH-ORDER BYTE 81900019 AR PARMR,REG15 SET ON CONTROL BIT FOR SYNAD 82200019 L ENTRYR,DCBSYNAD PICK UP SYNAD ADDRESS 82500019 STM DCBR,BCKETR,DISP20(SAVER) SAVE REGS 2-3 82800019 STM BASER,ODDR,DISP56(SAVER) SAVE REGS 4-7 83100019 LM DCBR,ODDR,DISP28(SAVER) LOAD USER REGS 83400019 BALR RETURNR,ENTRYR BRANC TO SYNAD ROUTINE 83700019 STM DCBR,ODDR,DISP28(SAVER) SAVE USER REGS 84000019 LM DCBR,BCKETR,DISP20(SAVER) LOAD REGS 2-3 84300019 LM BASER,ODDR,DISP56(SAVER) LOAD REGS 4-7 84600019 NI BCKTBYT1(BCKETR),ERBITOFF SET POCKET ERROR BIT TO ZERO 84900019 LA REG1,SCUIOB LOAD DISP FROM PCU TO SCU IOB 85200019 L SCUIOBR,DCBIOBAD LOAD SCU IOB PREFIX ADDR 85500019 SR SCUIOBR,REG1 COMPUTE PCU IOB PREFIX ADDR 85800019 ST SCUIOBR,DCBIOBAD RESTORE DCB PCU IOB PREFIX ADDR 86100019 XI DCBMRIND,DCBALTER SET BIT OFF TO SHOW DCB RESTORED 86400019 LA REG15,FOUR LOAD RETURN CODE 86700019 ST REG15,RTNCDSP(SAVER) SET RETURN CODE 87000019 B CNTL030 BRANCH TO TEST THE NEXT BIT 87300019 * 87600019 CNTL080 EQU * 87900019 * 88200019 LA ENTRYR,FOUR LOAD I/O ERROR RETURN CODE 88500019 CL ENTRYR,RTNCDSP(SAVER) RETURN CODE POSTED 88800019 BE CNTL090 YES, BRANCH 89100019 SR ENTRYR,ENTRYR 89400019 ST ENTRYR,RTNCDSP(SAVER) SET RETURN CODE 89700019 * 90000019 CNTL090 EQU * 90300019 * 90600019 LM RETURNR,ODDR,DISP12(SAVER) LOAD USER REGS 90900019 BR RETURNR RETURN TO USER 91200019 DS 0F 91500019 CNTRLBIT DC X'20000000' SET THIS BIT IN REG 1 FOR SYNAD 91800019 SCNDTST DC XL4'000000CF' USED TO FIND LAST BIT TO PROC 92100019 FIRSTST DC XL2'006F' FIRST 6 BITS PROCESSED 92400019 PCKTCC DC XL2'000F' INITIAL POCKET COMMAND CODE 92700019 NXTPCKT DC XL2'0010' NEXT POCKET LITE COMMAND CODE 93000019 DS 40C RESERVED FOR MODIFICATIONS 93300019 DCBD DSORG=BS,DEVD=MR 93600019 END 93900019 ./ ADD SSI=01051939,NAME=IGG019V5,SOURCE=0 * /* START OF SPECIFICATIONS **** 00050021 * 00052021 *01* MODULE-NAME = IGG019V5 00054021 * 00056021 *01* MODULE-TYPE = MODULE 00058021 * 00058421 *02* PROCESSER = ASSEMBLER 00058821 * 00059221 **** END OF SPECIFICATIONS ***/ 00059621 TITLE '1419 APPENDAGES' 00060000 *********************************************************************** 00153321 * 00180000 *FUNCTION: 00240000 * THE APPENDAGES CONTAINED HEREIN MONITOR THE I/O 00300000 * OPERATIONS OF THE 1419 MAGNETIC INK CHARACTER READER. 00360000 * THE MAIN FUNCTION OF EACH APPENDAGE IS AS FOLLOWS: 00420000 * 00480000 * 1. PCI APPENDAGE- 00540000 * 00600000 * THIS ROUTINE HANDLES NORMAL POSTING OF BUFFERS 00660000 * AND THE UPDATING OF DATA ADDRESSES IN BOTH THE 00720000 * PCU AND SCU CCW STRINGS. IT LINKS TO (OR SCHEDULES 00780000 * THE USERS STACKER SELECT ROUTINE AND PLUGS THE 00840000 * RETURNED COMMAND INTO THE SCU CCW STRING. 00900000 * 00960000 * 2. ABNORMAL END APPENDAGE- 01020000 * 01080000 * THIS ROUTINE HANDLES UNIT CHECK CONDITIONS 01140000 * OCCURING ON EITHER THE PCU OR SCU. IT SETS 01200000 * ERROR INDICATIONS IN THE BUFFERS AND POSTS 01260000 * I/O OPERATIONS IN THE MICB ECB. 01320000 * 01380000 * 3. CHANNEL END APPENDAGE- 01440000 * 01500000 * THIS ROUTINE HANDLES CHANNEL END CONDITIONS 01560000 * ON THE SCU AND CHANNEL END OR UNIT EXCEPTION 01620000 * ON THE PCU. BUFFER STATUS INDICATORS ARE SET 01680000 * AND POSTING IS DONE IN THE MICB ECBS. 01740000 * 01800000 * 01860000 * 01920000 *ENTRIES: 01980000 * 02040000 * THE FOLLOWING FOUR ENTRY POINTS ARE USED. 02100000 * 02160000 * 1. PCIAPEN- 02220000 * 02280000 * THIS IS THE ENTRY POINT FOR THE PCI APPENDAGE. 02340000 * IT IS LINKED TO FROM IOS WHEN A PROGRAM CONTROLLED 02400000 * INTERRUPT OCCURS ON THE SCU CHANNEL PROGRAM. 02460000 * 02520000 * 2. ABNEND- 02580000 * 02640000 * THIS IS THE ENTRY POINT FOR THE ABNORMAL END 02700000 * APPENDAGE. IT IS LINKED TO FROM IOS WHEN UNIT 02760000 * CHECK OR CHANNEL ERRORS OCCUR ON THE PCU OR SCU 02820000 * 02880000 * 3. CHANEND- 02940000 * 03000000 * THIS IS THE ENTRY POINT FOR THE CHANNEL END 03060000 * APPENDAGE. IT IS LINKED TO FROM IOS WHEN 03120000 * CHANNEL END OR UNIT EXCEPTION OCCUR. 03180000 * 03240000 * 4. SCHEDSS- 03300000 * 03360000 * THIS IS THE ENTRY POINT FOR SCHEDULED STACKER 03420000 * SELECT ROUTINES. IT IS GIVEN CONTROL FROM THE 03480000 * DISPATCHER VIA A LPSW. 03540000 * 03600000 * 03660000 * 03720000 *INPUT: 03780000 * 03840000 * FOLLOWING IS THE INPUT TO THE APPENDAGES. 03900000 * 03960000 * GR1 CONTAINS THE ADDR OF THE REQUEST ELEMENT 04020000 * GR2 CONTAINS THE ADDR OF THE IOB 04080000 * GR3 CONTAINS THE ADDR OF THE DEB 04140000 * GR4 CONTAINS THE ADDR OF THE DCB 04200000 * GR7 CONTAINS THE ADDR OF THE UCB 04260000 * GR14 CONTAINS THE RETURN ADDR OF IOS 04320000 * GR15 CONTAINS THE ENTRY POINT ADDR 04380000 * 04440000 * FOLLOWING IS THE INPUT TO THE SCHEDULED SS ROUTINE. 04500000 * 04560000 * GR1 CONTAINS THE ADDR OF THE DCB 04620000 * GR13 CONTAINS THE ADDR OF A REG SAVE AREA 04680000 * GR15 CONTAINS THE ENTRY POINT ADDR 04740000 * 04800000 * 04860000 * 04920000 *OUTPUT: 04980000 * BUFFER STATUS INDICATORS ARE SET AND I/O OPERATIONS 05040000 * ARE POSTED IN THE MICB ECBS. 05100000 * 05160000 * 05220000 * 05280000 *EXTERNAL REFERENCES: 05340000 * 05400000 * THE USERS SS ROUTINE. 05460000 * 05520000 * 05580000 *ERROR CONDITIONS: 05640000 * 05700000 * NONE. 05760000 * 05820000 *********************************************************************** 05880000 EJECT 05940000 IGG019V5 CSECT 06000000 * VS1-3.1 CHANGES @XA03626 06000321 *A765094-765182,765995-766192 ALL SYSTEMS YA03170 SA68154 @XA03626 06002321 *A568700-568792 CHANGE APPLICABLE TO ALL SYS YA03143 SA67967 @XA03404 06004321 *A336500-336520 CHANGE APPLICABLE TO ALL SYSTEMS XA03385/SA67198 06010321 * RELEASE 21 DELETIONS 06050313 *A454100,889700 CHANGE APPLICABLE TO ALL SYSTEMS SA58043/OX01515 06100313 *A525400,525420,528380,845900 SA60294 06150313 *C492598 SA53204 06160313 *1022 A46398 06170313 *1022 A46625 06172313 *1022 A41426 06174313 *1022 A43711 06176313 *1022253200 A43224 06178313 *1022001200 A42476 06178713 *A525700 A33935 06179113 *A829800 A39662 06179513 *C717000 A39662 06179913 *A270100-270400,525200-526000,528040-529120,845500-845800 A33924 06199913 *C913200 A33924 06209913 *D525600,528600 A33924 06219913 * 06226613 *REGISTER EQUATES- 06228613 * 06233313 * 06240000 RQEREG EQU 1 ADDR OF RQE 06300000 IOBREG EQU 2 ADDR OF IOB 06360000 DEBREG EQU 3 ADDR OF DEB 06420000 DCBREG EQU 4 ADDR OF DCB 06480000 RTRNRG EQU 14 RETURN REG 06540000 RTRNREG EQU 14 RETURN REGISTER 06600000 BASE EQU 15 BASE REGISTER 06660000 CCWREG EQU 8 ADDR CCW STRING 06720000 GR5 EQU 5 WORK REGISTER 06780000 GR6 EQU 6 WORK REGISTER 06840000 GR7 EQU 7 WORK REGISTER 06900000 GR8 EQU 8 WORK REGISTER 06960000 GR9 EQU 9 WORK REG 07020000 GR10 EQU 10 WORK REG 07080000 CCREG EQU 10 COMPLETION CODE REGISTER 07140000 ECBADR EQU 11 ADDR ECB TO BE POSTED 07200000 ZERO EQU 0 PARM REG 07260000 PARM1 EQU 1 PARM REG 07320000 PARM2 EQU 2 PARM REG 07380000 CMICB EQU 7 ADDR CURRENT MICB 07440000 BAS3 EQU 11 BASE FOR SCHEDULED ROUTINE 07500000 BRANREG EQU 15 BRANCH REGISTER 07560000 SAVREG EQU 13 ADDR SAVE AREA 07620000 BA12 EQU 12 BASE REG 07680000 GR12 EQU 12 TCB ADDR FOR POST 07740000 CHANEND B CHANDIS(BASE) GO TO CHANNEL END HANDLER 07800000 ABNEND B ABNDIS(BASE) GO TO ABNORMAL END HANDLER 07860000 SCHEDSS B SCHEDIS(BASE) GO TO SCHEDULED STACKER SELECT 07920000 SIOENTER B SIODIS(BASE) START I/O APPENDAGE 41426 07950021 PCIAPEN EQU * START OF PCI INTERRUPT HANDLER 07980000 USING *,BA12 ESTABLISH ADDRESSABILITY 08040000 * 08100000 *********************************************************************** 08160000 * THE PCI APPENDAGE IS ENTERED WHENEVER A PROGRAM CONTROLLED 08220000 * INTERRUPT OCCURS ON THE SCU COMMAND CHAIN. THE PCI BIT IS 08280000 * ON IN BOTH WRITE DELAY COMMANDS IN THE SCU CHAIN. 08340000 * WHEN FUNCTIONING NORMALLY, A PCI INTERRUPT SHOULD OCCUR 08400000 * SHORTLY AFTER THE CHANNEL STARTS EXECUTING A WRITE DELAY 08460000 * COMMAND. THE APPENDAGE GETS CONTROL AND PERFORMS NECESSARY 08520000 * HOUSEKEEPING THEN LINKS TO THE USERS STACKER SELECT ROUTINE 08580000 * SO A POCKET MAY BE DETERMINED FOR THE DOCUMENT JUST READ. 08640000 * THE USER LINKS BACK TO THE APPENDAGE WHICH THEN PLUGS 08700000 * THE CHOSEN SS COMMAND CODE INTO THE NOP COMMAND IMMEDIATELY 08760000 * FOLLOWING THE WRITE DELAY WHICH CAUSED THE INTERRUPT. THE 08820000 * DOCUMENT WILL THEN BE SELECTED INTO THE POCKET CHOSEN BY THE 08880000 * USER. 08940000 * 09000000 *********************************************************************** 09060000 LR BA12,BASE 09120000 STM ZERO,BASE,KRESAV SAVE REGISTERS 09180000 USING IHADCB,DCBREG ESTABLISH ADDRESSABILITY 09240000 USING DXIOB,IOBREG FOR BLOCKS 09300000 BAL TRACRET,PCITRACE ENTER TRACE AT PCI POINT 41426 09330021 * 09360000 L GR8,CSW GET COMMAND ADDRESS 09420000 CLI ZERO(GR8),MREAD READ COMMAND, QQ 09480000 BNE WRNGCOM NO, PCI ON WRONG COMMAND 09540000 MVI ZERO(GR8),NOP NOP INVALID COMMAND 09600000 MVI WHICH,PCIINCTL INDICATE PCI APPEN EXECUTING 09900000 L CCWREG,IOBSTART-ONE GET ADDR SCU CCW CHAIN 09960000 * 10020000 L GR6,DCBIOBAD GET PCU IOB ADDR 10080000 L GR5,CCWD(GR6) GET ADDR PCU CCW CHAIN 10140000 LR GR10,GR5 SAVE ADDR PCU CHAIN 10200000 TM DCBMRFLG,ST2OR3 ARE WE IN STRING 2 OR 3,QQ 10260000 BZ ST1005 NO, DONT BUMP POINTER 10320000 TM DCBMRFLG,ST1 IS IT STRING 3 10380000 BZ ST2001 NO, GO BUMP TO STRING2 10440000 LA GR5,STRNGLEN(0,GR5) BUMP TO NEXT STRING 10500000 ST2001 LA GR5,STRNGLEN(0,GR5) DITTO 10560000 ST1005 L CMICB,DCBWTOID PICK UP ADDR CURRENT MICB 10620000 TM MICBFLAG(CMICB),INITIAL FIRST AFTER AN ENGAGE, QQ 10680000 BZ NFIRST NOT FIRST BUF 10740000 MVI ZERO(GR10),NOP SET ENGAGE TO NOP 10800000 B DONST006 CONTINUE PROCESSING 10860000 NFIRST EQU * 10920000 L GR9,MICBNM1(0,CMICB) GET ADDR OF ZEROS 10980000 L GR9,MICBECBA(GR9) SET BUFFER 11040000 MVI ZERO(GR9),XFF TO 11100000 MVC ONE(SEVEN,GR9),ZERO(GR9) ONES 11160000 DONST006 LA GR9,EIGHT(CCWREG) POINT AT FIRST WD COMMAND 11220000 TM DCBMRFLG,CHAIN2 IN 2ND SCU STRING, QQ 11280000 BZ DBMPT007 N/, DONT BUMP POI TER 11340000 LA GR9,TWEN4(0,GR9) POINT AT SECOND WD COMMAND 11400000 DBMPT007 L GR9,ZERO(0,GR9) GET ADDR WD BUFFER 11460000 LA GR8,FOUR8(ZERO,GR9) LIMITING BUF ADDR A46625 11510021 LA GR9,SIX4(0,GR9) POINT AT BUFFER END 11520000 SH GR9,CSW+SIX SUBTRACT RESIDUAL COUNT 11580000 CR GR9,GR8 IS CALC BUF ADDR PAST A46625 11630021 * LIMIT A46625 11632021 BNH USEGR9 WITHIN 16 BYTES OF BUF A46625 11634021 * A46625 11636021 LR GR9,GR8 USE LIMITING ADDR A46625 11638021 USEGR9 EQU * A46625 11638421 MVI ZERO(GR9),ZERO SET UP WD BUFFER 11640000 MVC ONE(SEVEN,GR9),ZERO(GR9) TO ZEROS 11700000 ST GR9,MICBECBA(0,CMICB) SAVE ADDR OF ZEROS 11760000 WRNGCOM EQU * 11820000 TM CSW+FOUR,UCHKCHND UNIT CHECK/CHANNEL END,QQ 11880000 BC NOTZ,RETXX YES, RETURN TO IOS AND LET 11940000 * CHANNEL END OR ABNORMAL END 12000000 * APPENDAGE HANDLE THE SITUATION 12060000 * 12120000 TM CSW+FIVE,CHANER ANY OTHER ERRORS,QQ 12180000 BC NOTZ,RETXX YES, RETURN TO IOS 12240000 * 12300000 L GR8,CSW GET COMMAND ADDR 12360000 CLI ZERO(GR8),NOP HAS WRITE BEEN NOPPED 12420000 BNE RETXX NO, RETURN TO IOS 12480000 TM DCBAPPIN,SIT0 HAS THE PCU CHAIN STOPPED,QQ 12540000 BZ GADCP1 NO, HANDLE SITUATION 12600000 RETXX EQU * 12660000 LM ZERO,BASE,KRESAV RESTORE REGS 12720000 BR RTRNREG YES, LET SCU CHANNEL END 12780000 * APPENDAGE HANDLE THE SITUATION 12840000 GADCP1 L GR8,MICBNEXT(0,CMICB) GET ADDR CURRENT+1 12900000 L GR8,MICBNEXT(0,GR8) GET ADDR CURRENT+2 12960000 L GR8,MICBNEXT(0,GR8) GET ADDR CURRENT+3 13020000 LA GR6,MICBSENS+ONE(0,GR8) POINT AT PCU SENSE AREA 13080000 ST GR6,MSDIS(0,GR5) PUT ADDR IN MSENSE COMMAND 13140000 MVI MSDIS(GR5),MSENS PUT COMMAND BACK 13200000 L GR6,MICBDATA(0,GR8) LOAD DATA ADDR 13260000 AH GR6,DCBBUFL POINT AT BUFFER END 13320000 BCTR GR6,0 DECREMENT BY ONE 13380000 ST GR6,MRDIS(0,GR5) PUT ADDR IN MODIFIED READ 13440000 MVI MRDIS(GR5),MREAD RESTORE COMMAND 13500000 TM DCBMRFLG,DISIND HAS DISENGAGE BEEN ISSUED 13560000 BZ SEIFSHUD NO, SEE IF IT SHOULD BE 13620000 SR GR6,GR6 CLEAR 6 13680000 IC GR6,DCBMRIND PICK UP BUFFER COU TER 13740000 SH GR6,H32CON DECREMENT IT BY ONE 13800000 STC GR6,DCBMRIND REPLACE IT. 13860000 SRA GR6,FIVE SHIFT OUT NOISE 13920000 BNZ NODIS010 NOT ZERO, ALL IS WELL 13980000 MVI NOPDIS(GR5),INVALC SET NOP TO AN INVALID 14040000 * COMMAND, THUS FORCING A 14100000 * COMMAND REJECT IF THE 14160000 * DISENGAGE WAS LOST. 14220000 B NODIS010 DONT TEST FOR DISENGAGE 14280000 SEIFSHUD EQU * 14340000 * 14400000 * 14460000 TM MICBFLAG(GR8),OVERRUN IS BUFFER OVERRUN IMMINENT 14520000 BO DISEN008 YES, GO SET FOR DISENGAGE 14580000 * 14640000 TM DCBMRFLG,URQST DID USER REQUEST DISENGAGE 14700000 BZ NODIS010 NO, DONT SET FOR STOP. 14760000 * 14820000 DISEN008 MVI NOPDIS(GR10),DISENG DITTO 14880000 MVI STRNGLEN(GR10),DISENG DITTO 14940000 MVI STRNGLEN+STRNGLEN(GR10),DISENG DITTO 15000000 OI DCBMRFLG,DISIND INDICATE DISENGAGE SET 15060000 OI DCBMRIND,SETO5 SET BUFFER COUNTER SO WE CAN 15120000 * FORCE COMMAND REJECT IF 15180000 * DISENGAGE COMMAND IS LOST. 15240000 * 15300000 * 15360000 NODIS010 L GR5,MICBNEXT(0,CMICB) GET ADDR CURRENT+1 MICB 15420000 ST GR5,DCBWTOID BUMP CURRENT POINTER 15480000 LA GR5,MICBSENS(0,GR5) POINT AT SENSE LOCATION 15540000 L CCWREG,IOBSTART-ONE GET ADDR SCU CCW CHAIN 15600000 TM DCBMRFLG,CHAIN2 ARE WE IN SECOND SCU STRING 15660000 BO SCSTR015 YES, GO UPDATE FIRST STRING 15720000 ST GR5,ZERO(0,CCWREG) PUT SENSE ADDR IN COMMAND 15780000 MVI ZERO(CCWREG),MSENS PUT COMMAND CODE BACK 15840000 MVI FORTY(CCWREG),MREAD SET UP REJECT COMMAND IN CASE 15900000 * OF MISSED PCI 15960000 NI FOUR(CCWREG),CHAINOFF TURN CHAIN BIT OFF 16020000 OI TWEN8(CCWREG),CHAINON TURN CHAIN BIT ON IN THIS STRNG 16080000 B SETSS020 GO SET SS INFO IN BUFFER 16140000 * 16200000 * 16260000 SCSTR015 ST GR5,TWEN4(0,CCWREG) PUT SENS ADDR IN COMMAND 16320000 MVI TWEN4(CCWREG),MSENS PUT COMMAND CODE BACK 16380000 MVI SIXTEEN(CCWREG),MREAD SET UP REJECT COMMAND IN CASE 16440000 * OF MISSED PCI 16500000 NI TWEN8(CCWREG),CHAINOFF TURN CHAIN BIT OFF 16560000 OI FOUR(CCWREG),CHAINON TURN CHAIN BIT ON IN THIS STRNG 16620000 * 16680000 * 16740000 * 16800000 SETSS020 TM MICBFLAG(CMICB),INITIAL FIRST BUFFER AFTER ENGAGE 16860000 BO SETRD040 YES, DONT SET SS INFO 16920000 * 16980000 L GR5,MICBNM1(0,CMICB) GET ADDR CURRENT-1 MICB 17040000 L GR8,MICBDATA(0,GR5) GET ADDR BUFFER 17100000 TM MICBSENS(GR5),LATESS LATE STACKER SELECT,QQ 17160000 BZ TSTAT025 NO, TEST AUTO SELECT 17220000 OI THREE(GR8),SETLTSS INDICATE LATE SS IN BUFFER 17280000 MVI FIVE(GR8),XREJCOM PUT X'CF' IN BYTE 5 17340000 TSTAT025 TM MICBSENS(GR5),AUTSEL WAS DOCUMENT AUTO SELECTED 17400000 BZ DOPST030 NO, GO POST AS COMPLETE 17460000 MVI FIVE(GR8),XREJCOM PUT X'CF' IN BYTE 5 17520000 OI TWO(GR8),SETAUTS INDICATE AUTO SELECT 17580000 * 17640000 * 17700000 DOPST030 TM MICBECB(GR5),WAIT DID USER WAIT 17760000 BZ ILPST035 NO, GO POST MYSELF 17820000 L CCREG,KCODCON LOAD COMPLETION CODE 17880000 LA ECBADR,MICBECB(0,GR5) GET ECB ADDR IN REG 11 17940000 LR GR5,BA12 SAVE BASE 18000000 L BASE,CVTAD GET ADDR CVT 18060000 L BASE,CVTOPT01(0,BASE) GET ADDR POST ROUTINE 18120000 L GR12,ZERO(DEBREG) GET TCB ADDRESS 18180000 BALR RTRNREG,BASE LINK TO POST ROUTINE 18240000 LR BA12,GR5 RESTORE BASE 18300000 B SETRD040 GO SET READ STATUS 18360000 * 18420000 * 18480000 * 18540000 ILPST035 IC CCREG,KCODCON PICK UP COMPLETION CODE 18600000 STC CCREG,MICBECB(0,GR5) POST ECB 18660000 * 18720000 * 18780000 SETRD040 L GR5,MICBDATA(0,CMICB) GET BUFFER ADDR 18840000 MVC TWO(TWO,GR5),MICBSENS+ONE(CMICB) SET READ STATUS 18900000 NI THREE(GR5),ZBIT2 ZERO BIT 2 18960000 XI DCBMRFLG,CHAIN2 UPDATE STRING IND FOR SCU 19020000 TM DCBMRFLG,ST2OR3 STRING 2 OR 3, QQ 19080000 BO WHICH045 GO SEE WHICH ONE 19140000 NI DCBMRFLG,OFFBIT5 TURN OFF BIT5 19200000 OI DCBMRFLG,ONBIT4 TURN ON BIT 4 19260000 B TSTAT055 GO TEST FOR AUTO SELECT 19320000 * 19380000 * 19440000 WHICH045 TM DCBMRFLG,ONBIT5 STRING 3, QQ 19500000 BZ SETB5050 NO, GO TURN ON BIT5 19560000 NI DCBMRFLG,OFFBIT4 TURN OFF BIT4 19620000 SETB5050 OI DCBMRFLG,ONBIT5 TURN ON BIT5 19680000 * 19740000 * 19800000 TSTAT055 TM TWO(GR5),AUTSEL+LATESS WAS DOC AUTO SELECTED 19860021 MVI FIVE(GR5),XREJCOM PUT X'CF' IN BYTE FIVE 19920000 LA BAS3,STPRM085+TWO SET UP NEW PASE 19980000 BNZ EXIT0120 YES, DONT DO STACKER SELECT 20040021 * 20100000 TM DCBMRFLG,DEBUG IS USER IN DEBUG MODE 20160000 BO FDIRB060 YES, PREPARE TO SCHEDULE SS 20220000 LR PARM1,DCBREG PUT DCB ADDR IN PARM1 20280000 B STPRM085 GO SET UP PARMS FOR USER 20340000 * 20400000 * 20460000 FDIRB060 L GR6,DEBIRBAD(0,DEBREG) GET ADDR IRB 20520000 TM RBSTAB+ONE(GR6),ACTIVE IS IRB ACTIVE 20580000 BO STPIT065 YES, GO CANCEL CURRENT REQUEST 20640000 * 20700000 L GR8,DEBTCBAD(0,DEBREG) GET ADDR OF TCB 20760000 TM TCBFLGS(GR8),CANI CAN ASYNCHRONOUS EXITS BE 20820000 * SCHEDULED, QQ 20880000 BZ YSCHED YES, GO TO STAGE 2 EFFECTOR 20940000 LB3 LA BAS3,STPRM085+TWO SET UP NEW PASE 21000000 B EXIT0120 GO GET OUT 21060000 YSCHED EQU * 21120000 TM DCBMRFG,IQESCHED IS THE IQE ON THE EXIT QUEUE 21180000 BO LB3 YES, PREPARE TO EXIT 21240000 OI DCBMRFG,IQESCHED INDICATE IQE IS QUEUED 21300000 LA PARM1,RBIQE+FOUR(0,GR6) GET ADDR IQE 21360000 XC RBIQE(FOUR,GR6),RBIQE(GR6) ZERO NEXT AVAILABLE 21420000 LCR PARM1,PARM1 PUT IT IN COMPLEMENT FORM FOR 21480000 * STAGE 2 EFFECTOR 21540000 LR GR8,BASE SAVE BASE 21600000 L BASE,CVTAD GET ADDR OF CVT 21660000 L BASE,CVT0EF00(0,BASE) GET ADDR STAGE 2 EFFECTOR 21720000 BALR RTRNREG,BASE GO PUT IQE ON LIST 21780000 LR BASE,GR8 RESTORE BASE 21840000 LA BAS3,STPRM085+TWO SET UP NEW BASE 21900000 B EXIT0120 GO EXIT THIS ROUTINE 21960000 * 22020000 * 22080000 STPIT065 L GR8,DEBTCBAD(0,DEBREG) GET ADDR OF TCB 22140000 L GR9,TCBRBP(0,GR8) GET REQUEST BLOCK ADDR 22200000 LA GR6,0(0,GR6) GET RID OF GARBAGE 22260000 CR GR9,GR6 IS THIS THE ADDR OF MY IRB 22320000 BE CHTCB070 YES, GO MODIFY TCB REGS 22380000 * 22440000 CHKAG070 L GR8,RBLINK(0,GR9) GET ADDR OF NEXT RB IN CHAIN 22500000 LA GR8,0(0,GR8) GET RID OF GARBAGE 22560000 CR GR8,GR6 IS IT MY IRB 22620000 BE CHIRB075 YES, GO SET REGS IN PRECEDING 22680000 * IRB 22740000 LR GR9,GR8 BUMP 9 AND 22800000 B CHKAG070 GO SEE IF NEXT IS MINE 22860000 * 22920000 CHTCB070 L GR5,CVTAD GET ADDR CVT 22980000 CLI CONFIG(GR5),MVT ARE WE IN MVT 23040000 BNE DOPCP072 NO, USE PCP REG DISPLACEMENT 23100000 ST DCBREG,TCBGRS+MVTR1(0,GR8) SAVE DCB ADDR IN TCB SAVAR 23160000 MVC TCBGRS+MVTR13(FOUR,GR8),ZERO(GR6) PUT S AREA ADDR IN 13 23220000 MVC TCBGRS+MVTR15(FOUR,GR8),RBEP(GR6) PUT EP ADDR IN SVAR 23280000 B CHPSW080 GO CHANGE ADDR IN OLD PSW 23340000 * 23400000 * 23460000 * 23520000 * 23580000 DOPCP072 ST DCBREG,TCBGRS+R1(0,GR8) PUT DCB ADDR IN R1 SAVE AREA 23640000 MVC TCBGRS+R13(4,GR8),0(GR6) PUT SAVE AREA ADDR IN R13 23700000 MVC TCBGRS+R15(4,GR8),RBEP(GR6) PUT E.P. ADDR IN R15 23760000 B CHPSW080 GO CHANGE OLD PSW IN IRB 23820000 * 23880000 * 23940000 CHIRB075 ST DCBREG,RBGSAV+RBR1(0,GR9) PUT DCB ADDR IN RB R1 SAVE AR 24000000 MVC RBGSAV+RBR13(FOUR,GR9),ZERO(GR6) PUT S AREA ADDR IN 13 24060000 MVC RBGSAV+RBR15(FOUR,GR9),RBEP(GR6) PUT EP ADDR IN 15 24120000 CHPSW080 MVC RBOPSW+FIVE(THREE,GR6),RBEP+ONE(GR6) CHANGE OLD PSW 24180000 LA BAS3,STPRM085+TWO SET UP NEW BASE 24240000 B EXIT0120 GO LEAVE ROUTINE 24300000 * 24360000 * 24420000 *********************************************************************** 24480000 * FOLLOWING IS THE ENTRY POINT TO THE SCHEDULED STACKER SELECT 24540000 * ROUTINE. NOTE THAT IF THE SS ROUTINE IS NOT TO BE SCHEDULED THIS 24600000 * ROUTINE IS USED AS IN-LINE CODE. 24660000 *********************************************************************** 24720000 * 24780000 * 24840000 SCEDSSX EQU * 24900000 DROP BA12 SWITCH 24960000 STPRM085 BALR BAS3,0 BASE 25020000 USING *,BAS3 REGISTERS 25080000 LR DCBREG,PARM1 PUT ADDR DCB IN DCBREG 25140000 L PARM2,DCBIMAGE GET IMAGE ADDR ADDR IN REG2 25200000 L PARM1,DCBWTOID GET ADDR CURRENT MICB 25260000 CLI DCBAPPIN,SIT3 IS IT SIT. 3-BAD READ A43224 25270021 BNE BACK NO, BACK UP CURR. PTR. A43224 25280021 XI DCBMRFLG,CHAIN2 UPDATE SCU STRING INDICATOR A43224 25290021 B NOBACK DONT BACK UP PTR. A43224 25300021 BACK L PARM1,MICBNM1(0,PARM1) GET ADDR PREV. MICB A43224 25310021 NOBACK EQU * A43224 25320021 L PARM1,MICBDATA(0,PARM1) POINT AT BUFFER 25380000 TM DCBMRFLG,DEBUG WAS I SCHEDULED 25440000 BO DNSTK090 YES, DONT TRY TO SET STORAGE KEY 25500000 * 25560000 L GR6,DCBDEBAD GET ADDR DEB 25620000 * MACHINE CHECKS 25920000 L SAVREG,DCBIOBAD GET ADDR PCU IOB 25980000 LA SAVREG,IOBLN+IOBLN(0,SAVREG) POINT AT SAVE AREA 26040000 PSWGEN IGG019V5A,GO095,(GR6,GR5,GR6) 26140000 * BRANCH TO G0095 26340000 DNSTK090 L SAVREG,DCBIOBAD GET ADDR PCU IOB 26400000 LA SAVREG,IOBLN+IOBLN(0,SAVREG) POINT AT SAVE AREA 26460000 * 26520000 GO095 L BRANREG,DCBSSAD GET ADDR SS ROUTINE 26580000 LR DEBREG,DCBREG PUT DCB ADDR IN 3 26640000 BALR RTRNREG,BRANREG GO TO USER 26700000 * 26760000 L PARM2,DCBIOBAD GET ADDR PCU IOB 26820000 L PARM2,IOBLN+SCUSTRNG(0,PARM2) GET ADDR SCU CCW STRING 26880000 IC GR7,FOUR(0,PARM1) PICK UP USERS SS CODE 26940000 STC GR7,FIVE(0,PARM1) PUT COMMAND IN BYTE 5 27000000 CLI FOUR(PARM1),SSC0 IS SS INDICATOR A X'0B' A33924 27010020 BNE TESTBNU NO/GO TEST FOR BNU A33924 27020020 LA GR7,CSS0 LOAD COMMAND CODE FOR 0 A33924 27030020 TESTBNU EQU * A33924 27040020 TM ONE(PARM1),BATCH BATCH NO. UPDATE SPECIFIED 27060000 BO DNTOR100 YES,LEAVE BIT 4 IN COMMAND 27120000 LA GR8,NVAL GET X'F7' 27180000 NR GR7,GR8 REMOVE BIT4 27240000 * 27300000 DNTOR100 LA GR8,MREAD GET READ OP CODE 27360000 CR GR7,GR8 IS USER PLUGGING A READ 27420000 BNE SWCHAN NO, CHECK WHICH CHAIN 27480000 L GR8,DCBWTOID GET CURRENT MICB ADDR 27540000 OI MICBFLAG(GR8),BADCOMI INDICATE USER HAS ISSUED READ 27600000 SWCHAN TM DCBMRFLG,CHAIN2 CHAIN2 INDICATED, QQ 27660000 BO SET10105 YES, PUT COMMAND IN CHAIN1 27720000 STC GR7,SS2DIS(0,PARM2) PUT COMMAND IN CHAIN2 27780000 B LEAVE110 GET READY TO GET OUT 27840000 * 27900000 SET10105 STC GR7,SS1DIS(0,PARM2) PUT COMMAND IN CHAIN 1 27960000 * 28020000 LEAVE110 TM DCBMRFLG,DEBUG IN DEBUGE MODE,QQ 28080000 BZ RSPSW115 NO, GO RESTORE PSW 28140000 NI DCBMRFG,IQEOFF IQE WILL BE DEQUEUED 28200000 * 28260000 SVC EXIT EXIT FROM SCHEDULED ROUTINE 28320000 * 28380000 RSPSW115 L SAVREG,DCBIOBAD GET ADDR PCU IOB 28440000 LA SAVREG,IOBLN+IOBLN(0,SAVREG) GET ADDR SAVE AREA 28500000 PSWGEN IGG019V5B,EXIT0120,(SAVREG,GR5,GR6) 28590000 * EXIT0120 28680000 EXIT0120 CLI WHICH,PCUABEND ARE WE IN ABNEND APPENDAGE,QQ 28740000 MVI WHICH,ZERO ZERO SWITCH 28800000 BE TSTXERR YES, SEE WHY 28860000 * 28920000 LM ZERO,BASE,KRESAV RESTORE SUP REGS 28980000 BR RTRNRG RETURN TO IOS 29040000 TSTXERR TM ZERSAV,UNRECOV CALL ERP, QQ 29100000 LM ZERO,BASE,KRESAV RESTOEE SUP REGS 29160000 BZ FOUR(RTRNREG) NO 29220000 OI DCBMRIND,X02 INDICATE ERP IS EXECUTING 29280000 BR RTRNREG ERP WILL EXECUTE 29340000 DROP BAS3 29400000 EJECT 29460000 *********************************************************************** 29520000 * FOLLOWING IS THE ABNORMAL END APPENDAGE. IT IS LINKED TO 29580000 * FROM IOS WHENEVER UNIT CHECK OR CHANNEL ERRORS OCCUR ON 29640000 * THE CCW CHAINS. THE APPENDAGE THEN SETS ERROR INFORMATION 29700000 * IN THE BUFFERS AND POSTS THEM COMPLETE. IF THE ERROR WAS ANYTHING 29760000 * OTHER THAN INTERVENTION REQUIRED, THIS APPENDAGE SPECIFIES 29820000 * THAT THE ERP SHOULD BE SCHEDULED WHEN IT RETURNS TO IOS. 29880000 *********************************************************************** 29940000 AEAPEN EQU * 30000000 USING PCIAPEN,BA12 30060000 LA BA12,PCIAPEN-ABNEND(0,BASE) SET UP BASE 30120000 L GR10,DCBIOBAD GET ADDR PCU IOB 30180000 LA GR10,EIGHT(0,GR10) BUMP OVER PREFIX 30240000 LA IOBREG,ZERO(0,IOBREG) CLEAR OUT GARBAGE 30300000 CR GR10,IOBREG PCU ABNORMAL END, QQ 30360000 BNE SCUAB800 NO GO HANDLE SCU ABNEND 30420000 STM ZERO,BASE,KRESAV SAVE IOS REGS 30480000 BAL TRACRET,TRACE ENTER TRACE FOR BREAK IN 41426 30500021 * CHAIN 41426 30520021 TM DCBMRIND,X02 ERP JUST FINISHED, QQ 30540000 BZ GTCOM005 NO, GO GET COMMAND ADDR 30600000 NI DCBMRIND,XFD TURN OFF ERP GOING BIT 30660000 TM DCBMRIND,X01 IS SCU ERP EXECUTING 30720000 BO GOGETOUT YES, LET IT POST BUFFER 30780000 * 30840000 TM DCBMRFG,PCURR CURRENT NEED POSTING 30900000 BO NPCURR YES, GO POST IT 30960000 TM DCBMRFG,PCURRP1 CURR+1 NEEDS POSTING, QQ 31020000 BO NPCURRP1 YES, GO POST IT 31080000 * 31140000 * NOTHING NEEDS POSTING, GET OUT 31200000 * 31260000 GOGETOUT LM ZERO,BASE,KRESAV RESTORE REGS 31320000 B FOUR(0,RTRNREG) RETURN TO IOS 31380000 * 31440000 NPCURR NI DCBMRFG,X7F TURN OFF POST CURRENT FLAG 31500000 L GR5,DCBWTOID GET ADDR CURRENT 31560000 DIDEW TM MICBECB(GR5),WAIT DID USER WAIT 31620000 BZ EYPST NO, POST HERE 31680000 L CCREG,KPCUER LOAD COMPLETION CODE 31740000 LA ECBADR,MICBECB(0,GR5) GET ECB ADDR 31800000 LR GR6,BA12 SAVE BASE 31860000 L BASE,CVTAD GET CVT ADDR 31920000 L BASE,CVTOPT01(0,BASE) GET ADDR OF POST ROUTINE 31980000 L GR12,ZERO(DEBREG) GET TCB ADDRESS 32040000 BALR RTRNREG,BASE LINK TO POST ROUTINE 32100000 LR BA12,GR6 RESTORE BASE 32160000 EYPST MVC MICBECB(FOUR,GR5),KPCUER POST IT 32220000 CLI IOBSIOCC,CC3 CONDITION CODE 3, QQ 32280000 BNE GOGETOUT NO, GO RETURN 32340000 MVI MICBECB(GR5),NORM SET TO NORMAL COMPLETION 32400000 B GOGETOUT GO RETURN TO IOS 32460000 * 32520000 NPCURRP1 NI DCBMRFG,XBF TURN OFF POST FLAG 32580000 L GR5,DCBWTOID GET ADDR OF CURRENT MICB 32640000 L GR5,MICBNEXT(GR5) GET ADDR CURRENT+1 32700000 B DIDEW GO POST CURR+1 32760000 * 32820000 GTCOM005 MVI WHICH,PCUABEND INDICATE THAT ABNEND APPENDAGE 32880000 * IS EXECUTING 32940000 CLI IOBSIOCC,CC3 DEVICE NOT OPERATIONAL,QQ 33240000 L CMICB,DCBWTOID GET ADDR CURRENT MICB 33360000 BNE XCHKCOM NO, SEE WHERE WE BLEW 33410021 B CURR020 GO HANDLE BLOW UP ON CURRENT 33420000 XCHKCOM EQU * 33480000 L GR5,IOBCSW PICK UP COMMAND ADDR 33540000 LA GR5,0(0,GR5) GET RID OF GARBAGE 33600000 LTR GR5,GR5 CSW IS ZERO SA67198 33650021 BZ CURR020 YES USE CURR BUFF SA67198 33652021 SH GR5,KEIGHT POINT AT COMMAND THAT BLEW 33660000 CLI ZERO(GR5),MREAD IS IT A MOD READ 33720000 BNE SEEIF010 NO, CHECK MSENSE 33780000 * 33840000 LA GR5,EIGHT(0,GR5) POINT AT MSENSE 33900000 B GSENS015 GO PICK OUT SENSE ADDR 33960000 * 34020000 SEEIF010 CLI ZERO(GR5),MSENS IS IT A MOD SENSE 34080000 BE GSENS015 YES, GO GET SENSE ADDR 34140000 * 34200000 LA GR5,SIXTEEN(0,GR5) MUST BE ENGAGE OR DISENGAGE 34260000 * BUMP BY 16 TO POINT AT MSENS 34320000 GSENS015 L GR5,ZERO(0,GR5) GET SENSE ADDR FROM COMMAND 34380000 LA GR5,ZERO(0,GR5) GET RID OF GARBAGE 34440000 SH GR5,KTEN GR5 NOW POINTS AT THE MICB 34500000 * WHICH CORRESPONDS TO THE 34560000 * COMMAND CHAIN THAT BLEW UP 34620000 L CMICB,DCBWTOID GET ADDR OF CURRENT MICB 34680000 LA CMICB,0(0,CMICB) GET RID OF GARBAGE 34740000 CR GR5,CMICB DID WE BLOW UP ON CURRENT STRNG 34800000 BE CURR020 YES,GO PROCESS ERROR 34860000 L GR5,MICBNM1(0,GR5) POINT AT CURRENT-1 34920000 CR GR5,CMICB DID WE BLOW UP ON CURRENT+1 34980000 BE CURP1065 YES, GO PROCESS ERROR 35040000 * 35100000 B CURP2 MUST HAVE BLOWN UP ON CURRENT+2 35160000 * 35220000 CURR020 TM MICBFLAG(CMICB),INITIAL FIRST BUFF ATER AN ENGAGE 35280000 BZ SCUBR035 NO, GO SEE IF SCU STILL GOING 35340000 * 35400000 L GR5,MICBDATA(0,CMICB) GET ADDR BUFFER 35460000 BAL RTRNREG,SESTAT GO SET BUFFER STATUS 35520000 * 35580000 TSSCU030 TM DCBAPPIN,XF0 HAS SCU CHAIN BROKEN 35640000 BNZ CHKWT050 YES,GO SEE IF USER WAITED 35700000 MVI DCBAPPIN,SITF INDICATE SITUATION F. 35760000 * THIS INDICATES TO THE SCU 35820000 * APPENDAGES THAT ONLY THE 35880000 * CURRENT BUFFER NEEDS TO BE 35940000 * POSTED 36000000 * 36060000 B TSTIR060 GO CHECK FOR INTV REQUIRED 36120000 * 36180000 SCUBR035 TM DCBAPPIN,XF0 HAS SCU CHAIN BEEN BROKEN 36240000 BNZ SETER040 YES, SET ERROR INFO IN BUFFER 36300000 MVI DCBAPPIN,SIT2 INDICATE SITUATION 2 SO THAT 36360000 * SCU APPENDAGES KNOW THAT 36420000 * CURRENT-1 BUFFER MUST STILL 36480000 * BE SET FOR SS AND POSTED. 36540000 SETER040 L GR5,MICBDATA(0,CMICB) GET ADDR BUFFER 36600000 BAL RTRNREG,SESTAT GO SET BUFFER STATUS 36660000 * 36720000 CHKWT050 TM ZERSAV,UNRECOV GOING TO ERP 36780000 BNZ REDPOST YES GO INDICATE WE ARE READY TO 36840000 * POST UPON COMPLETION OF ERP 36900000 TM DCBMRIND,X01 IS SCU ERP EXECUTING 36960000 BO REDPOST YES,INDICATE WE ARE READY 37020000 * ANYTIME YOU ARE. 37080000 TM MICBECB(CMICB),WAIT DID USER WAIT FOR BUFFER 37140000 BZ IPOST055 NO I WILL POST IT 37200000 * 37260000 L CCREG,KCODCON LOAD NORMAL COMPLETION CODE 37320000 LA ECBADR,MICBECB(0,CMICB) GET ECBADDR 37380000 LR GR5,BA12 SAVE BASE 37440000 L BASE,CVTAD GET ADDR CVT 37500000 L BASE,CVTOPT01(0,BASE) GET ADDR POST ROUTINE 37560000 L GR12,ZERO(DEBREG) GET TCB ADDRESS 37620000 BALR RTRNREG,BASE LINK TO POST ROUTINE 37680000 LR BA12,GR5 RESTORE BASE 37740000 * 37800000 * 37860000 IPOST055 MVC MICBECB(FOUR,CMICB),KCODCON POST COMPLETE 37920000 B TSTIR060 GO LEAVE 37980000 REDPOST OI DCBMRFG,PCURR SAY CURRENT MUST BE POSTED 38040000 TSTIR060 TM ZERSAV,UNRECOV ERRORS BESIDES I.R. 38100000 BNZ GO2ERP SET FOR ERP 38160000 CLI IOBSIOCC,CC3 DEVICE NOT READY,QQ 38220000 BE GO2ERP SET FOR ERP 38280000 LM ZERO,BASE,KRESAV RESTORE SUPV ERGS 38340000 B FOUR(ZERO,RTRNREG) DONT CALL ERP FOR I.R. 38400000 * 38460000 GO2ERP OI DCBMRIND,X02 INDICATE ERP IS EXECUTING FOR 38520000 * PCU 38580000 LM ZERO,BASE,KRESAV RESTORE SUPV REGS 38640000 BR RTRNREG LET IOS SCHEDULE ERP 38700000 * 38760000 *********************************************************************** 38820000 * THE FOLLOWING CODE HANDLES THE SITUATION WHEN THE PCU CHAIN 38880000 * BLOWS UP ON CURRENT+1 BUFFER. 38940000 *********************************************************************** 39000000 CURP2 L GR5,MICBNEXT(0,GR5) POINT AT C+2 MICB 39060000 L GR5,MICBDATA(0,GR5) POINT AT C+2 BUFFER 39120000 LH GR6,DCBBUFL GET BUFFER LEN 39180000 BCTR GR6,ZERO DECREMENT FOR EXECUTE 39240000 EX GR6,CLR CLEAR C+2 BUFFER 39300000 * 39360000 B CURP1065 GO HANDLE BLOW UP AS IF IT 39420000 * OCCURRED ON C+1. 39480000 * 39540000 CURP1065 TM DCBAPPIN,XF0 HAS SCU CHAIN BROKEN 39600000 BZ SETSS090 GO SET STACKER INFO IN C-1 39660000 * 39720000 CLI WHICH,PCUABEND ARE WE IN CHAN END APPENDAGE 39780000 BNE CLRBUF75 YES, GO CLEAR C+1 BUFFER 39840000 * 39900000 L GR5,MICBDATA(0,CMICB) GET ADDR CURRENT BUFFER 39960000 BAL RTRNREG,SESTAT GO SET BUFFER STATUS 40020000 * 40080000 CLRBUF75 L GR5,MICBNEXT(0,CMICB) GET ADDR C+1 MICB 40140000 L GR5,MICBDATA(0,GR5) GET ADDR C+1 BUFFER 40200000 LH GR6,DCBBUFL GET BUFFER LENGTH 40260000 BCTR GR6,ZERO DECREMENT FOR EXECUTE 40320000 EX GR6,CLR CLEAR C+1 BUFFER 40380000 * 40440000 * 40500000 B CHKWT050 GO POST AND EXIT 40560000 * 40620000 * 40680000 * 40740000 * 40800000 * 40860000 *********************************************************************** 40920000 * 40980000 * IF PCU CHAIN BLEW UP ON CURRENT+1 BUFFER AND THE SCU CHAIN 41040000 * HAS NOT YET BROKEN, THE FOLLOWING CODE IS EXECUTED. 41100000 *********************************************************************** 41160000 * 41220000 * 41280000 SETSS090 TM MICBFLAG(CMICB),INITIAL FIRST AFTER AN ENGAGE 41340000 BO SWHCH105 GO SEE TO C+1 41400000 L GR5,MICBNM1(0,CMICB) GET ADDR C-1 MICB 41460000 L GR6,MICBDATA(0,GR5) GET C-1 BUFFER ADDR 41520000 TM MICBSENS(GR5),LATESS LATE STACKER SELECT,QQ 41580000 BZ TSTAT095 NO, TEST AUTO SELECT 41640000 MVI FIVE(GR6),XREJCOM PUT X'CF' IN BYTE 5 41700000 * 41760000 OI THREE(GR6),SETLTSS SET LATE STACKER BIT 41820000 TSTAT095 TM MICBSENS(GR5),AUTSEL WAS DOCUMENT AUTO SELECTED 41880000 BZ DPOST095 41940000 OI TWO(GR6),SETAUTS INDICATE AUTO SELECT 42000000 MVI FIVE(GR6),XREJCOM PUT X'CF' IN BYTE 5 42060000 * 42120000 DPOST095 TM MICBECB(GR5),WAIT DID USER WAIT 42180000 BZ MPST100 NO, POST MYSELF 42240000 L CCREG,KCODCON LOAD COMPLETION CODE 42300000 LA ECBADR,MICBECB(0,GR5) GET ECB ADDR 42360000 LR GR5,BA12 SAVE BASE 42420000 L BASE,CVTAD GET ADDR CVT 42480000 L BASE,CVTOPT01(0,BASE) GET ADDR POST ROUTINE 42540000 L GR12,ZERO(DEBREG) GET TCB ADDRESS 42600000 BALR RTRNREG,BASE GO TO POST ROUTINE 42660000 LR BA12,GR5 RESTORE BASE 42720000 B SWHCH105 GO SEE WHICH APPENDAGE WERE IN 42780000 * 42840000 * 42900000 MPST100 MVC MICBECB(FOUR,GR5),KCODCON POST C-1 COMPLETE 42960000 SWHCH105 L GR5,MICBNEXT(0,CMICB) GET ADDR C+1 MICB 43020000 STERR110 L GR6,MICBDATA(0,GR5) GET ADDR C+1 BUFF 43080000 ST GR5,INTSAV SAVE 5 43140000 LR GR5,GR6 SET 5 FOR SUBROUTINE 43200000 BAL RTRNREG,SESTAT GO SET BUFFER STATUS 43260000 L GR5,INTSAV RESTORE 5 43320000 TM ZERSAV,UNRECOV GOING TO ERP,QQ 43380000 BNZ RPOST YES,INDICATE READY FOR POST 43440000 TM DCBMRIND,X01 IS SCU EXECUTING 43500000 BO RPOST YES,INDICATE READY FOR POST 43560000 MVC MICBECB(FOUR,GR5),KCODCON POST NORMAL COMPLETION 43620000 B LEVALON GET READY FOR SS 43680000 RPOST OI DCBMRFG,PCURRP1 CURRENT+1 MUST BE POSTED 43740000 LEVALON EQU * 43800000 * 43860000 L GR5,MICBDATA(0,CMICB) PICK UP BUFFER ADDRESS 43920000 MVC TWO(TWO,GR5),MICBSENS+ONE(CMICB) SET READ STATUS 43980000 NI THREE(GR5),ZBIT2 ZERO BIT 2 44040000 * 44100000 MVI DCBAPPIN,SIT3 SET SITUATION INDICATOR FOR 44160000 * SCU APPENDAGES. 44220000 B TSTAT055 GO AND PREPARE FOR EXIT TO 44280000 * USERS SS ROUTINE. 44340000 * 44400000 * 44460000 * THE FOLLOWING SUBROUTINE SETS BUFFER STATUS INDICATORS 44520000 * 44580000 SESTAT TM IOBCSW+FOUR,ASC ATTENTION,S MOD,OR CU END 44640000 ST CMICB,CSAV SAVE CURRENT MICB 44700000 BZ OTHERR NO, SEE IF OTHER ERRORS 44760000 OI ZERO(GR5),UNRECOV SET IO ERROR BIT 44820000 OTHERR TM IOBCSW+FIVE,IPPCCIC OTHER ERRORS ININ STATUS 44880000 BZ TSNS NO, TEST SENSE 44940000 OI ZERO(GR5),UNRECOV SET IO ERROR BIT 45000000 TSNS TM IOSENS0,CMRJBOC COMM REJECT OR BUS OUT CHECK 45060000 BZ CHKIRQ NO, CHECK I.R. 45120000 OI ZERO(GR5),UNRECOV SET IO ERROR BIT 45180000 CHKIRQ TM IOSENS0,INTVR IS I.R. BIT ON 45240000 BZ SAVE0 NO, GO SAVE BYTE 0 45300000 OI ZERO(GR5),IR SET ON I.R. BIT 45360000 NI ZERO(GR5),UEOFF SET UE BIT OFF OX01515 45410003 L GR7,DCBDEBAD GET ADDR PCU DEB 45420000 L BASE,DEBUCBAD(GR7) GET ADDR PCU UCB 45480000 OI UCBFL1(BASE),NOTREDY SET PCU NOT READY 45540000 CLI WHICH,PCUABEND PCU ABEND, QQ 45600000 BNE STSCUNR NO, SET SCU NOT READY 45660000 B SAVE0 DONT SET SCU NOT READY 45720000 STSCUNR EQU * 45780000 L BASE,DEBUCBAD+FOUR(GR7) GET ADDR SCU UCB 45840000 OI UCBFL1(BASE),NOTREDY SET SCU NOT READY 45900000 SAVE0 MVC ZERSAV(ONE),ZERO(GR5) SAVE BYTE ZERO 45960000 L CMICB,CSAV RESTORE MICB POINTER 46020000 BR RTRNREG RETURN 46080000 * 46140000 * 46200000 *********************************************************************** 46260000 * 46320000 * 46380000 * 46440000 EJECT 46500000 *********************************************************************** 46560000 * 46620000 * FOLLOWING IS THE CHANNEL END APPENDAGE. IT IS ENTERED WHEN 46680000 * CHANNEL END OCCURS ON THE PCU OR SCU CCW CHAINS. 46740000 *********************************************************************** 46800000 * 46860000 * 46920000 CEAPEN EQU * 46980000 LA BA12,PCIAPEN-CHANEND(0,BASE) SET BASE REGISTER 47040000 L GR10,DCBIOBAD GET ADDR PCU IOB 47100000 LA GR10,EIGHT(GR10) BUMP OVER PREFIX 47160000 LA IOBREG,0(IOBREG) CLEAR OUT GARBAGE 47220000 CR GR10,IOBREG PCU CHANNEL END. QQ 47280000 STM ZERO,BASE,KRESAV NO, 47340000 BNE SCUCE005 GO HANDLE SCU CHAN END 47400000 BAL TRACRET,TRACE ENTER TRACE FOR BREAK IN 41426 47420021 * CHAIN 41426 47440021 MVI WHICH,PCUCE INDICATE PCU CHAN END APPENDAGE 47460000 * IS BEING EXECUTED 47520000 LA GR5,IOBLN(GR10) POINT TO SCU IOB 47524000 TM TWO(GR5),OPATTN TEST IF OP ATTN LAST TIME 47528000 BZ CECONT NO/CONTINUE CHANNEL END PROCESSING 47534000 L GR5,DCBDEBAD LOAD ADDR OF DEB 47541000 L GR5,DEBUCBAD(GR5) LOAD ADDR OF PCU UCB 47548000 OI UCBFL1(GR5),NOTREDY SET PCU UCB TO NOT READY TO KEEP 47555000 * PCU IN SYNC WITH SCU 47562000 CECONT EQU * 47569000 L CMICB,DCBWTOID PICK UP ADDR CURRENT MICB 47580000 * 47640000 TM DCBAPPIN,XF0 HAS SCU STOPPED 47700000 BNZ GETGONX YES, POST AND LEAVE 47760000 * 47820000 L GR5,IOBCSW PICKUP COMMAND ADDR 47880000 L GR5,ZERO(0,GR5) GET SENSE ADDR 47940000 LA GR5,ZERO(0,GR5) GET RID OF GARBAGE 48000000 SH GR5,KTEN GR5 NOW POINTS AT THE MICB WHICH 48060000 * CORRESPONDS TO THE COMMAND STRING 48120000 * THAT TERMINATED DUE TO UNIT EX. 48180000 LA CMICB,0(0,CMICB) GET RID OF GARBAGE 48240000 CR GR5,CMICB TERMINATE ON CURRENT 48300000 BE UEONC YES, GO HANDLE AS NORMAL 48360000 * 48420000 * UNIT EXCEPTION ON THE PCU HAS OCCURRED ON THE CURRENT+1 BUFFER. 48480000 * THIS MEANS THAT IO ON THE SCU WAS NOT STARTED IN TIME TO PREVENT 48540000 * THE PCU FROM TERMINATING. THIS SITUATION WILL BE TREATED AS A 48600000 * LATE PCI. 48660000 * 48720000 MVI DCBAPPIN,SIT5 INDICATE SITUATION 5 48780000 B GIT GO EXIT 48840000 * 48900000 UEONC EQU * 48960000 L GR5,MICBDATA(0,CMICB) GET ADDR C BUFFER 49020000 OI ZERO(GR5),UEX TURN ON UNIT EXCEPTION 49080000 TM MICBECB(CMICB),WAIT HAS USER WAITED ON THIS A46398 49250021 BZ LVTME009 A46398 49254021 L CCREG,KCODCON PUT COMP. CODE INTO R10 A46398 49256021 LA ECBADR,MICBECB(0,CMICB) GET ECB ADDR A46398 49258021 L BASE,CVTAD A46398 49258421 L BASE,CVTOPT01(0,BASE) GET ADDR OF POST ROUT. A46398 49258821 LR GR5,BA12 SAVE BASE A46398 49259221 L GR12,ZERO(DEBREG) GET TCB ADDR A46398 49259621 BALR RTRNREG,BASE TO POST. A46398 49259721 LR BA12,GR5 RESTORE BASE SA53204 49259821 LVTME009 MVC MICBECB(FOUR,CMICB),KCODCON POST MICB COMP. A46398 49259921 MVI DCBAPPIN,SIT2 INDICATE C-1 MUST STILL BE 49300021 * SET FOR SS AND POSTED 49320000 B GIT 49380000 GETGONX EQU * 49440000 TM DCBMRIND,X01 IS SCU EXECUTING 49500000 BNZ RPOST2 YES INDICATED POST NEEDED 49560000 TM MICBECB(CMICB),WAIT HAS USER WAITED ON THIS BUFFER 49620000 BZ LVTME010 NO, DONT LINK TO POST ROUTINE 49680000 * L CCREG,KSCUER PUT COMPLETION CODE IN R10 49740000 LA ECBADR,MICBECB(0,CMICB) GET ECB ADDR 49800000 L BASE,CVTAD GET ADDR OF CVT 49860000 L BASE,CVTOPT01(0,BASE) GET ADDR OF POST ROUTINE 49920000 LR GR5,BA12 SAVE BASE 49980000 L GR12,ZERO(DEBREG) GET TCB ADDRESS 50040000 BALR RTRNREG,BASE LINK TO POST ROUTINE 50100000 LR BA12,GR5 RESTORE BASE 50160000 LVTME010 MVC MICBECB(FOUR,CMICB),KSCUER POST COMPLETE WITH ERROR 50220000 GIT EQU * 50280000 LM ZER0,BASE,KRESAV RESTORE REGISTERS 50340000 B FOUR(0,RTRNREG) RETURN TO IOS 50400000 RPOST2 OI DCBMRFG,PCURR CURRENT NEEDS POSTING 50460000 B GIT GO RETURN TO IOS 50520000 * 50580000 * 50640000 * 50700000 EJECT 50760000 *********************************************************************** 50820000 * THE FOLLOWING CODE HANDLES CHANNEL END CONDITIONS ON THE 50880000 * SCU CCW CHAIN. 50940000 *********************************************************************** 51000000 * 51060000 * 51120000 * 51180000 * 51240000 SCUCE005 L GR5,IOBSIOCC GET COMMAND CHAIN ADDRESS 51300000 BAL TRACRET,TRACE ENTER TRACE FOR BREAK IN 41426 51320021 * CHAIN 41426 51340021 L GR6,DCBIOBAD GET ADDR PCU IOB 51360000 L GR6,CCWD(0,GR6) GET ADDR OF PCU CCW STRING 51420000 LA GR6,XPCLEN(0,GR6) POINT AT SCU STRING 51480000 LA GR5,0(0,GR5) GET RID OF GARBAGE 51540000 CR GR5,GR6 DID THE CE OCCUR ON THE 51600000 * POCKET LIGHT CHAIN 51660000 BE WHPCU010 NO, GO HANDLE THE INTERRUPT 51720000 TM DCBMRFG,LITEL LAST LIT COMMAND, QQ 51780000 BZ MTCOM NO, MORE TO COME 51840000 NI DCBMRFG,OFFLITE TURN OFF LIGHT SWITCH 51900000 * 51960000 OI UCBFL1(GR7),NOTREDY SET DEVICE TO NOT READY 52020000 L GR7,DCBDEBAD GET ADDR PCU DEB 52080000 L GR7,DEBUCBAD(GR7) GET ADDR PCU UCB 52140000 OI UCBFL1(GR7),NOTREDY SET PCU TO NOT READY 52200000 MTCOM LM ZERO,BASE,KRESAV RESTORE REGS 52260000 BR RTRNREG RETURN TO IOS 52320000 WHPCU010 OI DCBAPPIN,BDTCE INDICATE BROKEN DUE TO CHAN END 52380000 MVN CHECKARE(1),DCBAPPIN MOVE SITUATION INDICATOR 52440000 CLI CHECKARE,SIT5 LATE PCI, QQ 52500000 BNE NEXTSIT NO/GO TEST NEXT SIT A33924 52510020 L GR5,IOBCSW LOAD ADDR OF FAILING CMND A33924 52520020 LA GR5,0(0,GR5) GET RID OF GARBAGE A33924 52530020 CLI ZERO(GR5),EASYONE IF E1, PREV CCW IS MS SA60294 52540021 BE MSBREAK DO SIT O PEOCESS SA60294 52542021 OI DCBAPPIN,BDTUC INDICATE BROKEN DUE TO UC A33935 52550020 B HNDLLPCI GO HANDLE LATE PCI A33924 52570020 NEXTSIT EQU * A33924 52590020 CLI CHECKARE,SITF HAS SITUATION F BEEN INDICATED 52620000 BE GETIT2 YES, CURRENT MUST BE POSTED 52680000 CLI CHECKARE,SIT2 SITUATION 2 52740000 BE CHKFZ020 GO POST C-1 52800000 CLI CHECKARE,ZERO IS IT SITUATION ZERO A33924 52804020 BNE SIT3035 NO/ASSUME SITUATION 3 A33924 52808020 * A33924 52812020 * SITUATION 0 CAN OCCUR AT THIS POINT IN TIME ONLY IF PRECEEDING A33924 52816020 * PCI CAME IN SO LATE THAT THE APPENDAGE DID NOT HAVE ADEQUATE A33924 52820020 * TIME TO UPDATE THE FOLLOWING MS COMMAND BEFORE THE CHANNEL A33924 52824020 * FETCHES IT. CONSEQUENTLY THE SCU CHAIN BROKE AT THE MS A33924 52828020 * COMMAND WITH CHANNEL END AND DEVICE END ONLY. THIS A33924 52832020 * SITUATION WILL BE HANDLED AS A MISSED PCI. A33924 52836020 MSBREAK EQU * SA60294 52838021 L GR5,IOBCSW LOAD ADDR OF LAST COMMAND A33924 52840020 LA GR5,0(0,GR5) GET RID OF GARBAGE A33924 52844020 L GR6,IOBSTART-ONE LOAD START ADDR SCU CHAN PGM A33924 52848020 LA GR6,EIGHT(0,GR6) POINT TO SECOND COMMAND A33924 52852020 CR GR5,GR6 ARE WE ON 1ST OR 2ND MS A33924 52856020 BNE SECMS SECOND MS A33924 52860020 LA GR6,THIR2(0,GR6) POINT TO ASSOC NOP/SS CCW A33924 52864020 B UPDTCSW GO MODIFY IOBCSW A33924 52868020 SECMS EQU * A33924 52872020 LA GR6,EIGHT(0,GR6) POINT TO ASSOC NOP/SS CCW A33924 52876020 UPDTCSW EQU * A33924 52880020 MVI 0(GR6),MREAD SET NOP/SS TO MREAD COM A33924 52884020 LA GR6,EIGHT(0,GR6) POINT PAST COMMAND A33924 52888020 ST GR6,IOBCSW MODIFY LAST COMMAND ADDR A33924 52892020 OI IOBCSW+4,UC SET UNIT CHECK IN IOB A33924 52896020 OI IOBFLAG1,UXFLG SET EXCEPTION FLAG ON IN IOB A33924 52900020 MVI DCBAPPIN,SIT5 SET SITUATION 5 IN DCB A33924 52904020 MVI IOBSENS0,COMREJ SET IOBSENS0 TO COMREJ A33924 52908020 B REGCH810 GO HANDLE MISSED PCI A33924 52912020 GETIT L GR5,DCBWTOID GET ADDR CURRENT MICB 52920000 POSTT011 TM MICBECB(GR5),WAIT HAS USER WAITED FOR BUFFER 52980000 BZ IPSTT015 NO, POST MYSELF 53040000 * 53100000 L CCREG,KCODCON LOAD COMPLETION CODE 53160000 LA ECBADR,MICBECB(0,GR5) GET ADDR ECB 53220000 HDFRPST LR GR6,BA12 SAVE BASE 53280000 L BASE,CVTAD GET ADDR CVT 53340000 L BASE,CVTOPT01(0,BASE) GET ADDR POST ROUTINE 53400000 L GR12,ZERO(DEBREG) GET TCB ADDRESS 53460000 BALR RTRNREG,BASE GO TO POST ROUTINE 53520000 LR BA12,GR6 RESTORE BASE 53580000 * 53640000 BEGON012 EQU * 53700000 TM DCBAPPIN,BDTLTPCI DID UNIT CHECK OCCUR 53760000 * ON SCU DUE TO MISSED PCI. 53820000 * IF SO (TAKE NOTE) WE ARE 53880000 * IN THE ABNORMAL END APPENDAGE 53940000 BO STPCI030 YES, GO INDICATE SAME 54000000 LM ZERO,BASE,KRESAV RESTORE REGISTERS 54060000 B FOUR(0,RTRNREG) RETURN TO IOS 54120000 * 54180000 GETIT2 L GR5,DCBWTOID GET ADDR CURRENT MICB 54240000 L GR6,MICBDATA(0,GR5) GET BUFFER ADDR 54300000 TM ZERO(GR6),UNRECOV ERRORS BESIDESI.R. 54360000 BO NOTNORM YES, SEE IF POST IS NEEDED 54420000 TM DCBMRIND,X02 IS PCU ERP EXECUTING 54480000 BZ GETIT NO, GO POST NORMAL COMPLETION 54540000 GTPERR OI DCBMRFG,PCURR INDICATE CURRENT NEEDS POSTING 54600000 SORTOL LM ZERO,BASE,KRESAV RESTORE REGS 54660000 B FOUR(0,RTRNREG) RETURN TO IOS 54720000 NOTNORM TM DCBMRIND,X02 IS PCU ERP EXECUTING, QQ 54780000 BO GTPERR YES, INDICATE CURRENT NEEDS PST 54840000 TM MICBECB(GR5),WAIT HAS USER WAITED 54900000 BZ HFTPERR NO, POST MYSELF 54960000 L CCREG,KPCUER GET COMPLETION CODE 55020000 LA ECBADR,MICBECB(0,GR5) GET ECG ADDR 55080000 B HDFRPST GO POST ABNORMAL COMPLETION 55140000 HFTPERR MVC MICBECB(ONE,GR5),KPCUER POST COMPLETION 55200000 B SORTOL GO EXIT 55260000 IPSTT015 MVC MICBECB(0,GR5),KCODCON POST COMPLETE 55320000 B BEGON012 SEE WHAT SIT WE RE IN 55380000 CHKFZ020 L CMICB,DCBWTOID GET ADDR CURRENT MICB 55440000 L GR5,MICBNM1(0,CMICB) GET ADDR C-1 MICB 55500000 L GR6,MICBDATA(0,GR5) GET ADDR C-1 BUFFER 55560000 TM MICBFLAG(CMICB),INITIAL FIRST BUFFER AFTER AN ENGAGE 55620000 BO BEGON012 YES, LEAVE. 55680000 * 55740000 CHKSS024 TM MICBSENS(GR5),LATESS LATE STACKER SELECT, QQ 55800000 BZ ISTAT025 NO, CHECK FOR AUTO SELECT 55860000 MVI FIVE(GR6),XREJCOM PUT X'CF' IN BYTE 5 55920000 OI THREE(GR6),SETLTSS INDICATE LATE SS IN BUFFER 55980000 ISTAT025 TM MICBSENS(GR5),AUTSEL WAS DOCUMENT AUTO SELECTED 56040000 BZ POSTT011 NO, GO POST COMPLETION, 56100000 MVI FIVE(GR6),XREJCOM PUT X'CF' IN BYTE 5 56160000 OI TWO(GR6),SETAUTS INDICATE AUTO SELECT 56220000 B POSTT011 GO POST AS COMPLETE 56280000 * 56340000 * 56400000 STPCI030 L GR5,MICBDATA(0,CMICB) GET CURRENT BUFFER ADDR 56460000 OI ZERO(GR5),PCIMISD INDICATE PCI WAS MISSED 56520000 LA GR5,INDLEN(0,GR5) BUMP OVER BUFFER STATUS 56580000 LH GR6,DCBBUFL GET BUFFER LENGTH 56640000 SH GR6,KELEVN DECREMENT FOR EXECUTE 56700000 EX GR6,CLR CLEAR C+1 BUFFER 56760000 * 56820000 L GR5,MICBNEXT(0,CMICB) GET NEXT MICB @XA03626 56870021 L GR5,MICBDATA(0,GR5) GET BUFFER ADDRESS @XA03626 56872021 TM FIVE(GR5),XFF HAS BUF BEEN PROCESSED @XA03626 56874021 BNO BUFOK NO,DONT NEED TO CLEAR @XA03626 56876021 LA GR5,INDLEN(0,GR5) BUMP OVER BUFFER STATUS@XA03626 56878021 EX GR6,CLR CLEAR BUFFER @XA03626 56878421 * @XA03626 56878821 BUFOK EQU * @XA03626 56879221 CLI CHECKARE,SIT5 HAS PCU QUIT 56880000 BNE RESGO NO, GO EXIT 56940000 TM DCBAPPIN,BDTUC ARE WE GOING TO ERP 57000000 BO RPOST3 YES, SET POST READY 57060000 * 57120000 TM MICBECB(CMICB),WAIT HAS USER WAITED 57180000 BZ DNGPST NO, POST MYSELF 57240000 L CCREG,KSCUER GET COMPLETION CODE 57300000 LA ECBADR,MICBECB(0,CMICB) GET ECB ADDR 57360000 LR GR6,BA12 SAVE BASE 57420000 L BASE,CVTAD GET ADDR CVT 57480000 L BASE,CVTOPT01(0,BASE) GET ADDR POST ROUTINE 57540000 L GR12,ZERO(DEBREG) GET TCB ADDRESS 57600000 BALR RTRNREG,BASE GO TO POST ROUTINE 57660000 LR BA12,GR6 RESTORE BASE 57720000 DNGPST MVC MICBECB(FOUR,CMICB),KSCUER POST COMPLETION 57780000 RESGO TM DCBAPPIN,BDTUC ARE WE GOING TO ERP 57840000 BZ DSYES NO, BRANCH AROUND BIT SET 57900000 OI DCBMRIND,X01 INDICATE C SCU ERP EXECUTING 57960000 DSYES LM ZERO,BASE,KRESAV RESTORE REGS 58020000 BR RTRNREG 58080000 * 58140000 RPOST3 OI DCBMRFG,PCURR CURRENT NEEDS POSTING 58200000 B RESGO GO GET OUT 58260000 * 58320000 * 58380000 SIT3035 L GR5,DCBWTOID GET ADDR CURRENT 58440000 L GR6,MICBDATA(0,GR5) GET ADDR BUFFER 58500000 B CHKSS024 GO SET SS INFO 58560000 * 58620000 * 58680000 * 58740000 EJECT 58800000 * 58860000 *********************************************************************** 58920000 * THE FOLLOWING CODE IS EXECUTED IF ABNORMAL END OCCURS ON 58980000 * THE SCU CCW CHAIN. 59040000 *********************************************************************** 59100000 * 59160000 SCUAB800 STM ZERO,BASE,KRESAV SAVE REGS 59220000 BAL TRACRET,TRACE ENTER TRACE FOR BREAK IN 41426 59240021 * CHAIN 41426 59260021 MVI WHICH,SCUAB INDICATE SCU ABEND GOING 59280000 TM DCBMRIND,X01 ERP JUST FINISH, QQ 59340000 BZ CHKCN805 NO, CONTINUE 59400000 * 59460000 NI DCBMRIND,XFE TURN OFF ERP GOING 59520000 TM DCBMRIND,X02 IS PCU ERP GOING 59580000 BO NWGO YES, LET IT POST BUFFER 59640000 * 59700000 TM DCBMRFG,PCURR CURRENT NEED POSTING, QQ 59760000 BO XPCURR YES, GO DO IT 59820000 TM DCBMRFG,PCURRP1 CURR+1 NEED POSTING, QQ 59880000 BO XPCURRP1 YES, GO DO IT 59940000 * 60000000 * NOTHING NEEDS POSTING. GET OUT 60060000 * 60120000 NWGO LM ZERO,BASE,KRESAV RESTORE REGS 60180000 B FOUR(0,RTRNREG) RETURN TO IOS 60240000 * 60300000 XPCURR NI DCBMRFG,X7F TURN OFF POST CURRENT FLAG 60360000 L GR5,DCBWTOID GET ADDR CURRENT MICB 60420000 XDIDEW TM MICBECB(GR5),WAIT DID USER WAIT, QQ 60480000 BZ XEYPOST NO, POST HERE 60540000 L CCREG,KSCUER LOAD COMPLETION CODE 60600000 LA ECBADR,MICBECB(0,GR5) GET ECB ADDR 60660000 LR GR6,BA12 SAVE BASE 60720000 L BASE,CVTAD GET CVT ADDR 60780000 L BASE,CVTOPT01(0,BASE) GET ADDR POST ROUTINE 60840000 L GR12,ZERO(DEBREG) GET TCB ADDRESS 60900000 BALR RTRNREG,BASE GO POST COMPLETION 60960000 LR BA12,GR6 RESTORE BASE 61020000 XEYPOST MVC MICBECB(FOUR,GR5),KSCUER POST COMPLETE 61080000 B NWGO GO GET OUT 61140000 * 61200000 XPCURRP1 NI DCBMRFG,XBF TURN OFF POST FLAG 61260000 L GR5,DCBWTOID GET ADDR CURRENT MICB 61320000 L GR5,MICBNEXT(0,GR5) GET ADDR CURR+1 61380000 B XDIDEW GO POST 61440000 * 61500000 CHKCN805 L GR5,IOBSIOCC GET COMMAND CHAIN ADDRESS 61560000 L GR6,DCBIOBAD GET ADDR PCU IOB 61620000 L GR6,CCWD(0,GR6) GET ADDR OF PCU CCW STRING 61680000 LA GR6,XPCLEN(0,GR6) POINT AT SCU STRING 61740000 LA GR5,0(0,GR5) GET RID OF GARBAGE 61800000 CR GR5,GR6 ARE WE ON POCKET LIGHT CHAIN 61860000 BE REGCH810 NO, GO HANDLE INTERRUPT 61920000 TM DCBMRFG,LITEL LAST LITE COMMAND, QQ 61980000 BZ MTCOM2 NO, MORE TO COME 62040000 NI DCBMRFG,OFFLITE TURN OFF LITE SW 62100000 * 62160000 OI UCBFL1(GR7),NOTREDY SET DEVICE TO NOT READT 62220000 L GR7,DCBDEBAD GET ADDR PCU DEB 62280000 L GR7,DEBUCBAD(GR7) GET ADDR PCU UCB 62340000 OI UCBFL1(GR7),NOTREDY SET PCU TO NOT READY 62400000 MTCOM2 LM ZERO,BASE,KRESAV RESTORE REGS 62460000 BR RTRNREG RETURN 62520000 * 62580000 * 62640000 REGCH810 OI DCBAPPIN,BDTUC INDICATE SCU CHAIN BROKEN DUE 62700000 * 62760000 MVN CHECKARE(1),DCBAPPIN ISOLATE SITUATION 62820000 CLI CHECKARE,SIT5 LATE PCI, QQ 62880000 BE HNDZR815 YES,GO HANDLE IT 62940000 CLI CHECKARE,SITF IS IT SITUATION F 63000000 BE HNDF3820 YES, GO HANDLE IT 63060000 CLI CHECKARE,SIT3 IS IT SITUATION 3 63120000 BE HNDSIT3 YES, HANDLE IT 63180000 CLI CHECKARE,ZER0 IS IT SITUTATION 0 63240000 BE HNDZR815 YES HANDLE 63300000 CLI CHECKARE,SIT2 SITUATION 2 63360000 BE HNDST855 YES, HANDLE IT 63420000 HNDZR815 L GR5,IOBCSW PICK UP COMMAND ADDR 63480000 LA GR5,0(0,GR5) GET RID OF GARBAGE 63540000 SH GR5,KEIGHT POINT AT FAILING COMMAND 63600000 * 63660000 CLI ZERO(GR5),MREAD IS IT A READ COMMAND 63720000 BNE RGUCK875 NO, GO HANDLE REGULAR UNIT CHECK 63780000 TM IOSENS0,COMREJ COMMAND REJECT, QQ 63840000 BZ RGUCK875 NO, HANDLE AS REGULAR ERROR 63900000 L CMICB,DCBWTOID GET CURRENT MICB ADDR 63960000 TM MICBFLAG(CMICB),BADCOMI DID USER ISSUE THIS COMMAND 64020000 BZ MSPCI NO. ITS A MISSED PCI 64080000 NI MICBFLAG(CMICB),BADOFF TURN OFF BAD COMMAND BIT 64140000 B RGUCK875 HANDLE AS COMMAND REJECT 64200000 MSPCI EQU * 64260000 NI IOSENS0,REJOFF TURN OFF COMMAND REJECT 64320000 OI IOSENS0,LLS SET ON LATE SS SENSE 64380000 * 64440000 * COMMAND REJECT HAS OCCURRED ON A READ COMMAND TO THE 64500000 * SCU. THIS MEANS THAT THE PCI INTERRUPT WAS NOT ACCEPTED 64560000 * IN TIME TO RESET THE COMMAND TO A NOP 64620000 * 64680000 HNDLLPCI EQU * 64740000 OI DCBAPPIN,BDTLTPCI INDICATE SCU CHAIN BROKEN DUE 64800000 * TO LATE PCI. 64860000 CLI EIGHT(GR5),TIC IS IT A TIC COMMAND 64920000 BNE GSENS NO/GO PICK UP SENSE AREA ADDR 64980000 S GR5,FORTY8 YES/POINT TO FIRST SENSE COMMAND 65040000 GSENS L GR5,EIGHT(GR5) POINT TO SENSE COMMAND 65100000 LA GR5,ZERO(0,GR5) GET RID OF GARBAGE 65160000 SH GR5,KNINE POINT AT ASSOCIATED MICB 65220000 L CMICB,DCBWTOID GET CURRENT POINTER 65280000 CR GR5,CMICB DID THE PCI INTERRUPT OCCUR 65340000 * SO LATE THAT WE STILL GOT 65400000 * COMMAND REJECT ON THE WRITE. 65460000 BE CHKFZ020 NO, GO SET PCI MISSED IN 65520000 * CURRENT AND POST C-1. 65580000 ST GR5,DCBWTOID YES, BACK UP CURRENT POINTER 65640000 LR CMICB,GR5 DITTO 65700000 B STPCI030 GO SET PCI MISSED IN CURRENT 65760000 * 65820000 * 65880000 HNDF3820 L CMICB,DCBWTOID GET ADDR C MICB 65940000 L GR5,MICBDATA(0,CMICB) GET BUFFER ADDR 66000000 BAL RTRNREG,SESTAT GO SET BUFFER STATUS 66060000 TM ZERSAV,UNRECOV UNRECOVERABLE ERROR, QQ 66120000 BZ NONTALL NO, CONTINUE 66180000 NI ZERO(GR5),OFFERR TURN OFF BIT 2 66240000 OI ZERO(GR5),UNRECVSS TURN ON UNRECOV SS ERROR 66300021 NONTALL EQU * 66360000 * 66420000 * 66480000 * 66540000 * 66600000 * 66660000 * 66720000 XPSTT835 TM ZERSAV,UNRECOV GOING TO ERP, QQ 66780000 BO RPOST4 YES, INDICATE POST NEEDED 66840000 TM DCBMRIND,X02 IS PCU ERP EXECUTING 66900000 BO RPOST4 YES, INDICATE POST NEEDED 66960000 TM MICBECB(CMICB),WAIT HAS USER WAITED, QQ 67020000 BZ IPOST840 NO, POST IT MYSELF 67080000 * 67140000 L CCREG,KCODCON GET NORMAL COMPLETION CODE 67200000 LA ECBADR,MICBECB(0,CMICB) GET ECB ADDR. 67260000 L BRANREG,CVTAD GET ADDR CVT 67320000 L BRANREG,CVTOPT01(0,BRANREG) GET ADDR POST ROUTINE 67380000 LR GR5,BA12 SAVE BASE 67440000 L GR12,ZERO(DEBREG) GET TCB ADDRESS 67500000 BALR RTRNREG,BRANREG GO POST ECB 67560000 LR BA12,GR5 RESTORE BASE 67620000 * 67680000 * 67740000 IPOST840 MVC MICBECB(FOUR,CMICB),KCODCON POST COMPLETE 67800000 * 67860000 XIT0850 TM ZERSAV,UNRECOV ERRORS BESIDES I.R. 67920000 LM ZERO,BASE,KRESAV RESTORE REGS 67980000 BZ FOUR(0,RTRNREG) DONT HAVE ERP SCHEDULED 68040000 OI DCBMRIND,X01 INDICATE SCU ERP EXECUTING 68100000 CLI CHECKARE,SIT5 PCU DOWN,MISSED PCI,43711 A43711 68110021 BNE ERPRET A43711 68120021 OI DCBMRFG,PCURR CURR MICB NEEDS POSTING A43711 68130021 ERPRET EQU * A43711 68140021 BR RTRNREG HAVE ERP SCHEDULED 68160000 * 68220000 RPOST4 OI DCBMRFG,PCURR CURRENT NEEDS POSTING 68280000 B XIT0850 GO GET OUT 68340000 * 68400000 HNDST855 L CMICB,DCBWTOID GET ADDR CURRENT MICB 68460000 TM MICBFLAG(CMICB),INITIAL FIRST BUFFER AFTER AN ENGAGE 68520000 BZ SXTSS860 NO, SET SS INFO IN C-1 68580000 NI MICBFLAG(CMICB),TURNOFF SET OFF INITIAL SWITCH 68640000 B HNDF3820 GO SET ERR INFO IN CURRENT 68700000 * 68760000 SXTSS860 L GR5,MICBNM1(0,CMICB) GET ADDR C-1 MICB 68820000 L GR8,MICBDATA(0,GR5) GET ADDR BUFFER 68880000 TM MICBSENS(GR5),LATESS LATE STACKER SELECT, QQ 68940000 BZ NTSTA865 NO, TEST AUTO SELECT 69000000 MVI FIVE(GR8),XREJCOM PUT X'CF' IN BYTE 5 69060000 OI THREE(GR8),SETLTSS SET LATE SS BIT 69120000 NTSTA865 TM MICBSENS(GR5),AUTSEL AUTO SELECT, QQ 69180000 BZ NPSTT870 NO, GO POST COMPLETE 69240000 MVI FIVE(GR8),XREJCOM PUT X'CF' IN BYTE 5 69300000 OI TWO(GR8),SETAUTS SET AUTO SELECT BIT 69360000 * 69420000 NPSTT870 TM MICBECB(GR5),WAIT DID USER WAIT 69480000 BZ NLPST872 NO, POST MYSELF 69540000 * 69600000 L CCREG,KCODCON LOAD NORMAL COMPLETION CODE 69660000 LA ECBADR,MICBECB(0,GR5) GET ECB ADDR 69720000 L BRANREG,CVTAD GET ADDR CVT 69780000 L BRANREG,CVTOPT01(0,BRANREG) GET ADDR POST ROUTINE 69840000 LR GR5,BA12 SAVE BASE 69900000 L GR12,ZERO(DEBREG) GET TCB ADDRESS 69960000 BALR RTRNREG,BRANREG GO TO POST ROUTINE 70020000 LR BA12,GR5 RESTORE BASE 70080000 B HNDF3820 GO SET ERR INFO IN CURRENT 70140000 * 70200000 NLPST872 MVC MICBECB(0,GR5),KCODCON POST BUFFER 70260000 B HNDF3820 GO SET ERR INFO 70320000 RGUCK875 L GR6,IOBSIOCC GET ADDR SCU CHAIN 70380000 LA GR6,0(0,GR6) GET RID OF GARBAGE 70440000 CR GR5,GR6 BLOW IN STRING2 70500000 BE BINTW880 YES, SEE IF THATS CURRENT 70560000 * 70620000 LA GR6,THIR2(0,GR6) POINT AT STRING 2 70680000 CR GR5,GR6 BLOW IN STRING2 70740000 BNL BINTW880 YES SEE IF THATS CURRENT 70800000 * 70860000 TM DCBMRFLG,CHAIN2 CHAIN2 CURRENT 70920000 BO BKUPT885 YES, WE BLEW IN C-1 70980000 B STPSS890 BLEW UP IN CURRENT 71040000 BINTW880 TM DCBMRFLG,CHAIN2 IS CHAIN2 CURRENT 71100000 BO STPSS890 YES, WE BLEW IN CURRENT 71160000 * 71220000 * BLEW UP IN C-1 CHAIN. SET SS INFO AND POST C-1 THEN SET ERR 71280000 * INFO IN CURRENT. 71340000 BKUPT885 L CMICB,DCBWTOID GET ADDR C MICB 71400000 L GR5,MICBNM1(0,CMICB) GET ADDR C-1 MICB 71460000 L GR5,MICBDATA(0,GR5) GET BUFFER ADDR 71520000 TM IOBCSW+FIVE,CPCHECK PROGRAM CHECK, QQ 71580000 BO MCF YES, SET BUFFER INFO 71640000 TM IOSENS0,COMRLTSS COMMAND REJ - LATE SS A39662 71700020 BZ NOTESA NO, TEST AUTO SELECT 71760000 MCF EQU * 71820000 MVI FIVE(GR5),XREJCOM PUT X'CF' IN BYTE 5 71880000 OI THREE(GR5),SETLTSS SET LATE STACKER BIT 71940000 NOTESA TM IOSENS0,AUTSEL WAS IT AUTO SELECTED, QQ 72000000 BZ NXGO NO DONT SET BIT 72060000 OI TWO(GR5),SETAUTS INDICATE AUTO SELECT 72120000 MVI FIVE(GR5),XREJCOM PUT X'CF' IN BYTE 5 72180000 * 72240000 NXGO L GR5,MICBNM1(0,CMICB) GO AND POST C-1 72300000 B PSTIT900 AND SET C. 72360000 * 72420000 * 72480000 STPSS890 L CMICB,DCBWTOID GET ADDR CMICB 72540000 L GR5,MICBNM1(0,CMICB) GET ADDR C-1 72600000 L GR6,MICBDATA(0,CMICB) GET BUFFER ADDR 72660000 TM MICBSENS(GR5),LATESS LATE STACKER SELECT,QQ 72720000 BZ TSTAT895 NO, TEST FOR AUTO SELECT 72780000 MVI FIVE(GR6),XREJCOM PUT X'CF' IN BYTE 5 72840000 OI THREE(GR6),LATESS SET LATE SS BIT 72900000 TSTAT895 TM MICBSENS(GR5),AUTSEL AUTO SELECT,QQ 72960000 BZ PSTIT900 NO , GO POST 73020000 OI TWO(GR6),SETAUTS SET AUTO SELECT BIT 73080000 MVI FIVE(GR6),XREJCOM PUT X'CF' IN BYTE 5 73140000 * 73200000 PSTIT900 TM MICBECB(GR5),WAIT DID USER WAIT 73260000 BZ PMYSF NO, POST IT MYSELF 73320000 L CCREG,KCODCON LOAD NORMAL COMPLETION CODE 73380000 LA ECBADR,MICBECB(0,GR5) GET ECB ADDR 73440000 L BRANREG,CVTAD GET CVT ADDR 73500000 L BRANREG,CVTOPT01(0,BRANREG) GET ADDR POST ROUTINE 73560000 LR GR6,BA12 SAVE BASE 73620000 L GR12,ZERO(DEBREG) GET TCB ADDRESS 73680000 BALR RTRNREG,BRANREG GO POST ECB 73740000 LR BA12,GR6 RESTORE BASE 73800000 PMYSF MVC MICBECB(FOUR,GR5),KCODCON POST COMPLETE 73860000 * 73920000 STERR905 L CMICB,DCBWTOID GET CURRENT MICB ADDR 73980000 L GR5,MICBDATA(0,CMICB) GET BUFFER ADDR. 74040000 BAL RTRNREG,SESTAT GO SET BUFFER STATUS 74100000 TM ZERSAV,UNRECOV ERRORS BESIDES I.R. 74160000 BZ NONTALL1 NO, CONTINUE 74220000 NI ZERO(GR5),OFFERR TURN OFF BIT 2 74280000 OI ZERO(GR5),UNRECVSS TURN ON UNRECOVERALBE ERROR 74340021 NONTALL1 EQU * 74400000 B XIT0850 74460000 * 74520000 * 74580000 * 74640000 * 74700000 HNDSIT3 L CMICB,DCBWTOID GET ADDR C MICB 74760000 L GR5,MICBDATA(0,CMICB) GET BUFFER ADDR 74820000 TM IOSENS0,LATESS LATE STACKER SELRCT, ,QQ 74880000 BZ TESATX NO, TEST AUTO SELECT 74940000 OI THREE(GR5),SETLTSS SET LATE STACKER BIT 75000000 MVI FIVE(GR5),XREJCOM PUT X'CF' IN BYTE 5 75060000 * 75120000 TESATX TM IOSENS0,AUTSEL WAS DOCUMENT AUTO SELECTED 75180000 BZ NOWPS NO, POST AS COMPLETE 75240000 MVI FIVE(GR5),XREJCOM PUT X'CF' IN BYTE 5 75300000 OI TWO(GR5),SETAUTS INDICATE AUTO SELECT 75360000 NOWPS LR GR5,CMICB GET ADDR C IN 5 75420000 TM MICBECB(CMICB),WAIT HAS USER WAITED 75480000 BZ XYPOST NO, POST MYSELF 75540000 L CCREG,KCODCON LOAD NORMAL COMPLETION CODE 75600000 LA ECBADR,MICBECB(CMICB) LOAD ECB ADDR 75660000 L BRANREG,CVTAD GET CVT ADDR 75720000 L BRANREG,CVTOPT01(BRANREG) GET ADDR POST ROUTINE 75780000 LR GR5,GR12 SAVE BASE REGISTER A42476 75810021 L GR12,ZERO(DEBREG) GET TCB ADDRESS 75840000 BALR RTRNREG,BRANREG GO POST COMPLETION 75900000 LR GR12,GR5 RESTORE BASE REGISTER A42476 75930021 XYPOST MVC MICBECB(FOUR,CMICB),KCODCON POST COMPLETION 75960000 L GR5,MICBNEXT(0,CMICB) GET ADDR C+1 MICB 76020000 L GR5,MICBDATA(0,GR5) GET ADDR C+1 BUFFER 76080000 BAL RTRNREG,SESTAT GO SET BUFFER STATUS 76140000 TM ZERSAV,UNRECOV ERRORS BESIDES I.R. 76200000 BZ NONTALL2 NO, CONTINUE 76260000 NI ZERO(GR5),OFFERR TURN OFF BIT 2 76320000 OI ZERO(GR5),UNRECVSS TURN ON UNRECOV 76380021 NONTALL2 EQU * 76440000 B XIT0850 GET OUT 76500000 SIOTRAC EQU * 41426 76501021 DROP BA12 FORCE USE OF BASE REG 15 41426 76502021 USING SIOENTER,BASE SAVE REGS BEFORE USING 12 41426 76503021 STM 0,15,KRESAV STORE IOS REGISTERS 41426 76504021 DROP BASE RETURN TO BASE REG 12 41426 76505021 USING PCIAPEN,BA12 RETURN TO BASE REG 12 41426 76506021 LA BA12,PCIAPEN-SIOENTER(0,BASE) EST. 41426 76507021 * ADDRESSIBILITY 41426 76508021 MVI WHAT,SIOENTRY SET SWITCH 41426 76509021 CH WORKA,DEBUCBAD+2(DEBREG) IS THIS PRI SIO @XA03404 76509421 BE PRISIO YES GO TEST SEC UNIT @XA03404 76509821 CH WORKA,DEBUCBAD+6(DEBREG) IS THIS SEC SIO @XA03404 76509921 BNE TRACE NEITHER TRACE AND GET @XA03404 76512121 LH WORKB,DEBUCBAD+2(DEBREG) IS SEC GET PRI UCB @XA03404 76514121 TM UCBFL1(WORKB),UCBPOST IS UNIT STARTED @XA03404 76516621 BO TRACE YES GO AHEAD @XA03404 76516721 L WORKA,IOBSIOCC GET COMMAND ADDRESS @XA03404 76516821 CLI 0(WORKA),MSENS SENSE OR PKT LITE @XA03404 76517221 BNE TRACE PKT LITE DONT SET NRDY @XA03404 76517321 NI UCBFL1(WORKA),XFF-NOTREDY SET THIS UNIT READY @XA03404 76517621 MVI WHICH,SIR INDICATE INTERV REQ @XA03404 76517721 B TRACE @XA03404 76517821 PRISIO LH WORKB,DEBUCBAD+6(DEBREG) GET SEC UCB ADDR @XA03404 76517921 NI UCBFL1(WORKB),XFF-NOTREDY SET SEC UCB READY @XA03404 76518021 B TRACE CONTINUE @XA03404 76518221 PCITRACE MVI WHAT,PCIENTRY SET PCI TRACE SWITCH 41426 76518821 TRACE EQU * 41426 76521021 L TTPTR,DCBIOBAD POINTER TO PCU IOB 41426 76523221 LA TTPTR,TRCEDSP(TTPTR) INCREMENT POINTER TO 41426 76525421 * TRACETABLE 41426 76527621 SR WORKA,WORKA ZERO REGISTER 41426 76529821 IC WORKA,0(TTPTR) LOAD INDEX VALUE 41426 76532021 SRA WORKA,ONE ALIGN AS MULIIPLE OF 8 41426 76534221 LA TTPTR,TABLE(WORKA,TTPTR) POSITION POINTER,NEXT 41426 76536421 * ENTRY 41426 76538621 CLI WHAT,PCIENTRY TEST ENTRY SWITCH 41426 76540821 BNE NOTPCI 41426 76543021 MVC 0(8,TTPTR),CSW STORE CSW IN THE TABLE 41426 76545221 B ADD 41426 76547421 NOTPCI CLI WHAT,SIOENTRY TEST ENTRY SWITCH 41426 76549621 BNE NOTSIO 41426 76551821 L WORKB,IOBSIOCC GET POINTER TO FIRST CCW 41426 76554021 MVC 0(ONE,TTPTR),0(WORKB) STORE COMMAND CODE 41426 76556221 MVC FOUR(FOUR,TTPTR),KRESAV+28 STORE UCB ADDRESS 41426 76558421 B ADD 41426 76560621 NOTSIO MVC 0(8,TTPTR),8(2) STORE CSW FROM IOB TO TABLE 41426 76562821 MVC 0(ONE,TTPTR),2(2) STORE SENSE BYTE 0 IN TABLE 41426 76565021 ADD AH WORKA,KEIGHT INCREMENT INDEX BY ONE 41426 76567221 SLA WORKA,ONE SHIFT OUT HIGH ORDER UNWANTED 41426 76569421 * BIT 41426 76571621 L TTPTR,DCBIOBAD STORE PCU IOB POINTER 41426 76573821 LA TTPTR,TRCEDSP(TTPTR) INCREMENT POINTER TO INDEX 41426 76576021 STC WORKA,0(TTPTR) 41426 76578221 L WORKA,KRESAV+28 REPLACE UCB POINTER IN 41426 76580421 * REGISTER 41426 76582621 CLI WHAT,SIOENTRY TEST ENTRY SWITCH 41426 76584821 MVI WHAT,RESTORE RESET SWITCH 41426 76587021 BE SIORET GO DIRECTLY TO IOS 41426 76589221 BR TRACRET GO TO IN LINE CODE 41426 76591421 SIORET EQU * @XA03404 76599521 CLI WHICH,SIR WAS ONE UNIT NOT READY @XA03404 76601821 LM 0,15,KRESAV RESTORE REGISTERS 41426 76605921 BNER RTRNREG @XA03404 76611621 *********************************************************************** 76611721 * @XA03404 76612021 * THE FOLLOWING ROUTINE WILL INSURE THAT THE PRIMARY UNIT IS 76612421 * BEFORE THE SECONDARY. 76612821 * 1 THE CHANNEL MASK IS SET TO TELL IOS TO RESTART CHANNEL 0 76613221 * 2 THE CONDITION CODE IS SET TO 2 TO TELL IOS THAT THE 76613321 * DEVICE IS BUSY. IOS WILL THEN QUEUE THE REQUEST. 76613421 * 3 RETURN TO IOS IS VIA REG 12 INSTEAD OF REG15 THIS WILL 76613521 * ALLOW IOS TO QUEUE THE REQUEST AND RESTART THE CHANNEL. 76614321 * 76614721 *********************************************************************** 76615121 L GR10,CVTAD GET CVT POINTER @XA03404 76616021 L GR10,CVTIXAVL GET RQE POINTER @XA03404 76616821 OI CHANMSK(GR10),CHANZERO SET CHAN ZERO TO RESTART @XA03404 76617621 LTR GR7,GR7 SET COND CODE TWO @XA03404 76618421 BR BA12 RETURN TO IOS @XA03404 76619221 TABLE EQU 8 TABLE BEGINS 8 BYTES FROM INDEX 41426 76620021 WORKA EQU 7 41426 76623021 TRCEDSP EQU 168 DISPLACEMENT OF TRACE TABLE FROM IOB 41426 76628721 TTPTR EQU 6 41426 76634421 PCIENTRY EQU X'01' 41426 76640121 SIOENTRY EQU X'02' SIGNAL FOR START I/O ENTRY 41426 76645821 WORKB EQU 10 41426 76651521 RESTORE EQU X'00' 41426 76657221 TRACRET EQU 11 41426 76662921 * 76668621 * 76674321 * DISPLACEMENT EQUATES: 76680000 * 76740000 * FOR MICB- 76800000 * 76860000 MICBNEXT EQU 0 ADDR OF NEXT MICB 76920000 MICBECB EQU 4 EMBEDDED EVENT CONTROL BLOCK 76980000 MICBFLAG EQU 8 FLAG BITS 77040000 MICBSENS EQU 9 SENSE INFORMATION 77100000 MICBECBA EQU 12 ADDR OF ECB 77160000 MICBNM7 EQU 16 ADDR OF CURRENT - 7 77220000 MICBNM1 EQU 20 ADDR OF CURRENT - 1 77280000 MICBDATA EQU 24 ADDR OF BUFFER 77340000 * 77400000 * 77460000 * FOR DEB- 77520000 * 77580000 DEBUCBAD EQU 32 DISP TO UCB ADDR 77640000 DEBIRBAD EQU 8 ADDR OF IRB 77700000 DEBTCBAD EQU 0 ADDR OF TCB 77760000 * 77820000 * 77880000 * FOR TCB- 77940000 * 78000000 TCBRBP EQU 0 ADDR FIRST REQUEST BLOCK 78060000 TCBGRS EQU 48 REGISTER SAVE AREA 78120000 R1 EQU 28 R1 SAVE AREA IN PCP AND MFT 78180000 R13 EQU 12 R13 SAVE AREA IN PCP AND MFT 78240000 R15 EQU 20 R15 SAVE AREA IN PCP AND MFT 78300000 MVTR1 EQU 4 R1 SAVE AREA IN MVT 78360000 MVTR13 EQU 52 R13 SAVE AREA IN MVT 78420000 MVTR15 EQU 60 R15 SAVE AREA IN MVT 78480000 TCBPKE EQU 28 PROTECTION KEY 78540000 TCBFLGS EQU 29 DISP TO FLAG BYTES 78600000 * 78660000 * 78720000 * 78780000 * FOR CVT- 78840000 * 78900000 CVTAD EQU 16 78960000 CVT0EF00 EQU 4 ADDR STAGE 2 EFFECTOR 79020000 CVTOPT01 EQU 152 ADDR POST ROUTINE 79080000 CONFIG EQU 116 O.S. CONFIGURATION 79140000 CVTIXAVL EQU 124 OFFSET TO NEXT RQE PTR 79190021 CHANMSK EQU 20 OFFSET OF CHAN MASK FROM 79192021 * RQE POINTER 79200021 * 79260000 * 79320000 * 79380000 * FOR IRB- 79440000 * 79500000 RBLINK EQU 28 ADDR NEXT REQUEST BLOCK 79560000 RBIQE EQU X'60' DISP TO IQE ADDR 79620000 CANI EQU X'01' TO TEST IF ASYNCHRONOUS EXIT 79680000 * ROUTINES CAN BE SCHEDULED 79740000 LITEL EQU X'10' TO SEE IF ITS LAST LITE 79800000 OFFLITE EQU X'EF' TO TURN OFF LIGHT SW 79860000 IQESCHED EQU X'08' TO INDICATE IQE IS ON EXIT LIST 79920000 IQEOFF EQU X'F7' TO TURN OFF IQESCHED 79980000 ONE EQU 1 DISP OF 1 80040000 SEVEN EQU 15 FOR LENGTH IN MOVE 80100000 EIGHT EQU 8 DISP OF 8 80160000 TWEN4 EQU 24 DISP OF 24 80220000 SIX4 EQU 64 DISP OF 64 80280000 SIX EQU 6 DISP OF 6 80340000 FIVE EQU 5 DISP OF 5 80400000 TWEN8 EQU 28 DISP OF 28 80460000 THREE EQU 3 DISP OF 3 80520000 FOUR8 EQU 48 DISP OF 48 A46625 80570021 TWO EQU 2 DISP OF 2 80580000 SIXTEEN EQU 16 DISP OF 16 80640000 THIR2 EQU 32 DISP OF 32 80700000 RBOPSW EQU 16 OLD PSW 80760000 RBGSAV EQU 32 GEN REG SAVE AREA 80820000 RBEP EQU 12 E.P. OF ASYNCHRONOUS ROUTINE 80880000 RBSTAB EQU 10 FLAG BITS 80940000 RBR1 EQU 4 REGISTER 1 81000000 RBR13 EQU 52 REGISTER 13 81060000 RBR15 EQU 60 REGISTER 15 81120000 * FOLLOWING ARE EQUATES FOR IMMEDIATE DATA AND MASKS 81180000 * 81240000 CHANZERO EQU X'80' MASK TO RESTART CHAN ZERO 81290021 NOTZ EQU 7 MASK FOR BR NOT ZEROES 81300000 UCHKCHND EQU X'0A' MASK FOR TESTING UNIT CHECK AND 81360000 * CHANNEL END 81420000 XFF EQU X'FF' 81480000 FORTY EQU 40 DISP OF 40 81540000 REJOFF EQU X'7F' TO TURN OFF COMMAND REJECT 81600000 BADCOMI EQU X'08' TO INDICATE USER HAS ISSUED 81660000 * REJECT COMMAND 81720000 BADOFF EQU X'F7' TO TURN OFF BADCOMI 81780000 CHANER EQU X'0F' MASK FOR TESTING CHANNEL ERRORS 81840000 SIT0 EQU X'0F' MASK FOR TESTING WHATS 81900000 * HAPPENING IN THE APPENDAGES 81960000 NOP EQU X'03' NO-OP COMMAND 82020000 ST2OR3 EQU X'08' TEST FOR STRING 2 OR 3 ON PCU 82080000 AMWP EQU X'04' AMWP FOR USERS PSW 82140000 ST1 EQU X'04' FOR TESTING STRING 1 BIT 82200000 MSENS EQU X'24' MOD SENSE COMMAND CODE 82260000 OVERRUN EQU X'40' FOR TESTING IF BUFFER OVERRUN 82320000 * IS IMMINENT 82380000 URQST EQU X'20' FOR TESTING IF USER REQUESTED 82440000 * DISENGAGE 82500000 DISENG EQU X'DF' DISENGAGE COMMAND 82560000 DISIND EQU X'10' DISENGAGE INDICATOR 82620000 CHAIN2 EQU X'80' FOR TESTING WHICH SCU CHAIN IS 82680000 * BEING EXECUTED 82740000 CHAINOFF EQU X'BF' TO TURN OFF COMMAND CHAINING 82800000 CHAINON EQU X'40' TO TURN ON COMMAND CHAINING 82860000 INITIAL EQU X'10' TO SEE IF ENGAGE JUST ISSUED 82920000 LATESS EQU X'04' FOR CHECKING LATE SS 82980000 COMRLTSS EQU X'84' COMMAND REJECT - LATE SS A39662 83010020 SETLTSS EQU X'20' FOR SETTING LATE SS IN BUFFER 83040000 X02 EQU X'02' TO INDICATE ERP IS EXECUTING 83100000 X01 EQU X'01' TO INDICATE SCU ERP EXECUTING 83160000 FOUR EQU 4 BRANCH DISPLACEMENT 83220000 PCURR EQU X'80' TO INDICATE POST CURRENT 83280000 PCURRP1 EQU X'40' TO INDICATE POST CURR+1 83340000 XFD EQU X'FD' TO TURN OFF X02 83400000 X7F EQU X'7F' TO TURN OFF PCURR 83460000 XBF EQU X'BF' TO TURN OFF PCURRP1 83520000 XFE EQU X'FE' TO TURN OFF X01 83580000 AUTSEL EQU X'02' FOR CHECKING AUTO SELECT BIT 83640000 SETAUTS EQU X'80' FOR SETTING AUTO SEL IN BUFFER 83700000 WAIT EQU X'80' TO CHECK WAIT BIT IN ECB 83760000 ZBIT2 EQU X'DF' FOR ZEROING DOC UNDER READ 83820000 * HEAD BIT 83880000 ONBIT4 EQU X'08' FOR TURNING ON BIT4 OF DCBMRFLG 83940000 OFFBIT5 EQU X'FB' FOR TURNING OFF BIT5 84000000 ONBIT5 EQU X'04' TO TURN ON BIT5 84060000 OFFBIT4 EQU X'F7' TO TURN OFF BIT4 84120000 DEBUG EQU X'40' TO SEE IF WERE IN DEBUG MODE 84180000 ACTIVE EQU X'40' TO SEE IF IRB IS ACTIVE 84240000 MVT EQU X'10' TO SEE IF CONFIGURATON IS MVT 84300000 BATCH EQU X'80' TO TEST FOR BATCH NO. UPDATE 84360000 ORVAL EQU X'08' TO TURN ON BATCH BIT IN COMMAND 84420000 EXIT EQU 3 SVC NO. FOR LEAVING SS ROUTINE 84480000 PCUABEND EQU X'AB' TO TEST 'WHICH' SWITCH 84540000 SSC0 EQU X'0B' SS IND FOR POCKET 0 2ND GROUP A33924 84550020 CSS0 EQU X'DB' SS CMD FOR POCKET 0 2ND GROUP A33924 84560020 UC EQU X'02' MASK FOR UNIT CHECK A33924 84570020 UXFLG EQU X'04' MASK FOR EXCEPTION FLAG IOB A33924 84580020 EASYONE EQU X'E1' CODE FOR WRITE DELAY COMMAND SA60294 84590021 * 84600000 PCIINCTL EQU X'01' TO SET 'WHICH' SWITCH 84660000 NOTEQ EQU 7 MASK FOR BCR NOT EQUAL 84720000 SETO5 EQU X'A0' TO SET BUFFER COUNTER 84780000 TOURQST EQU X'DF' SETS OFF URQST BIT 84840000 INVALC EQU X'FF' TO FORCE COMMAND REJECT 84900000 MREAD EQU X'4C' MREAD BACKWARDS COMMAND 84960000 CMRJBOC EQU X'A1' TO TEST COM REJ,BOC,AND OP ATT 85020000 UNRECOV EQU X'20' TO SET UNRECOV I/O ERROR 85080000 INTVR EQU X'41' MASK TO TEST INTVR REQ/OPR ATTN 85120000 OPATTN EQU X'01' MASK TO TEST SENS FOR OPR ATTN 85160000 SCUAB EQU X'BB' TO SAY SCU ABEND GOING 85200000 IR EQU X'08' TO SET INTV REQ BIT IN BUFFER 85260000 XF0 EQU X'F0' FOR TESTING IF SCU HAS BROKEN 85320000 SITF EQU X'0F' FOR SETTING SITUATION F 85380000 SIT2 EQU X'02' FOR SETTING SITUATION 2 85440000 CC3 EQU X'70' FOR CHECKING CC=3 85500000 UEX EQU X'10' FOR SETTING UNIT EXCEPTION BIT 85560000 SIT3 EQU X'03' FOR SETTING SITUATION 3 85620000 PCUCE EQU X'F0' TO SAY PCU C.E. APPEN IS EXCTNG 85680000 UNEXEP EQU X'01' FOR CHECKING UNIT EXCEPTION 85740000 NVAL EQU X'F7' FOR REMOVING BIT4 IN SS COMM 85800000 NWDUCHK EQU X'F0' TO INDICATE SCU HAS STOPPED 85860000 * DUE TO REG UNIT CHECK. 85920000 PCIMISD EQU X'04' TO INDICATE PCI MISSED 85980000 INDLEN EQU 10 LENGTH OF BUFFER STATUS 86040000 CMPLETE EQU X'40' TO TEST COMPLETE BIT 86100000 SVLN EQU 64 SAVE AREA LEN 86160000 PCULN EQU 80 LEN OF PCU CHAIN 86220000 BDTCE EQU X'40' TO SAY BROKEN DUE TO CHAN END 86280000 ERRORS EQU X'A0' TO SEE IF SCU HAS ERRS 86340000 WDELAY EQU X'E1' WRITE DELAY COMMAND CODE 86400000 COMREJ EQU X'80' FOR TESTING COMMAND REJ ON SCU 86460000 LLS EQU X'04' MASK TO SET ON LATE SS SENSE 86580000 SIR EQU X'40' TO CHECK INTV REQUIRED 86640000 BOC EQU X'20' TO TEST BUS OUT CHECK 86820000 CPCHECK EQU X'20' TO TEST CSW FOR PROGRAM CHECK 86880000 NOTIR EQU X'A0' TO TEST B.O. CHECK OR COM REJ 86940000 TURNOFF EQU X'EF' TO TURN OFF INITIAL BIT 87000000 XREJCOM EQU X'CF' REJECT POCKET 87060000 BDTUC EQU X'20' USED TO INDICATE IN DCBAPPIN 87120000 * THAT THE SCU HAS BROKEN DUE 87180000 * TO UNIT CHECK. 87240000 BDTLTPCI EQU X'80' USED TO SET DCBAPPIN TO 87300000 * INDICATE THE SCU HAS 87360000 * BROKEN DUE TO LATE PCI. 87420000 UNRECVSS EQU X'40' MASK TO TURN ON UNRECOVERABLE 87470021 * ERR0R FLAG 87472000 * FOLLOWING ARE EQUATES FOR ABSOLUTE ADDRESSES 87480000 * 87540000 CSW EQU 64 87600000 * FOLLOWING ARE EQUATES FOR VARIOUS DISPLACEMENTS AND LENGTHS 87660000 * 87720000 SS1DIS EQU 16 DISP TO FIRST SS COMMAND IN THE 87780000 * SCU CHAIN 87840000 SS2DIS EQU 40 DISP TO 2ND SS COMMAND 87900000 OFFERR EQU X'DF' TO TURN OFF UNRECOV 87960000 IPPCCIC EQU X'7F' TO TEST ERRORS IN CSW 88020000 ASC EQU X'E0' TO TEST ATTENTION,S MOD,CU END 88080000 UCBFL1 EQU 6 DISP TO UCB FLAG 88140000 NOTREDY EQU X'40' TO SET UCBFL1 FLAG 88200000 UCBPOST EQU X'20' MSK SEE IF DEV STARTED 88250021 NORM EQU X'7F' NORMAL COMPLETION CODE 88260000 CCWD EQU 24 DISP OF CCW ADDR IN IOB 88320000 IOBLN EQU 48 LENGTH OF PCU OR SCU IOB 88380000 XPCLEN EQU 80 LEN OF PCU CHAIN 88440000 SIT5 EQU X'05' SITUATION 5 INDICATOR 88500000 ZER0 EQU 0 88560000 SCUSTRNG EQU 24 DISP OF CCW ADDR IN IOB 88620000 STRNGLEN EQU 24 LENGTH OF EACH PCU STRING 88680000 MSDIS EQU 16 DISP TO MSENS IN EACH STRING 88740000 MRDIS EQU 8 DISP TO MREAD IN EACH STRING 88800000 NOPDIS EQU 0 DISP TO NOP IN EACH STRING 88860000 TIC EQU X'08' TIC COMMAND CODE 88920000 UEOFF EQU X'EF' MASK FOR BIT 3 OX01515 88970000 * FOLLOWING ARE CONSTANTS AND WORKAREAS USED BY THE APPENDAGES 88980000 * 89040000 * 89100000 DS 0D FOR ALIGNMENT 89160000 * 89820000 CSAV DC F'0' SAVE AREA FOR CMICB 89880000 KRESAV DS 16F FOR SAVING SUPVS REGISTERS 89940000 * 90000000 KCODCON DS 0F SUCCESSFUL 90060000 DC X'7F000000' COMPLETION CODE 90120000 * 90180000 WHAT DC X'00' CODE, TYPE ENTRY FROM IOS 41426 90210021 WHICH DC X'00' INDICATES WHICH APPENDAGE 90240000 CHECKARE DC X'00' FOR ISOLATING SITUATION 90300000 * IS EXECUTING AT ANY GIVEN TIME 90360000 KEIGHT DC H'8' CONSTANT OF 8 90420000 H32CON DC H'32' TO DECREMENT BUFF COUNTER 90480000 KTEN DC H'10' CONSTANT OF 10 90540000 KPCUER DS 0F ERROR COMPLETION CODE 90600000 DC X'41000000' 90660000 * 90720000 CLR XC 0(0,GR5),0(GR5) EXECUTED FOR ZEROING BUFFERS 90780000 * 90840000 KSCUER DS 0F ERROR COMPLETION CODE FOR SCU 90900000 DC X'41000001' 90960000 KELEVN DC H'11' CONSTANT 11 91020000 KNINE DC H'9' CONSTANT NINE 91080000 INTSAV DC F'0' SAVE AREA 91140000 FORTY8 DC F'48' CONSTANT OF 48 91200000 ZERSAV DC X'00' FOR SAVING BUFFER STATUS 91260000 DC 52F'0' PATCH AREA A33935 91320020 * FOLLOWING ARE DUMMY SECTIONS 91380000 DCBD DSORG=BS,DEVD=MR 91440000 * 91500000 * 91560000 NAME DSECT 91620000 DXIOB DS 0CL32 91680000 IOBFLAG1 DC X'00' 91740000 IOBFLAG2 DC X'00' 91800000 IOBSENSE DS 0H 91860000 IOBSENS0 DS CL1 91920000 IOBSENS1 DS CL1 SENSE BYTE 1 91980000 IOBECBPT DS XL1 92040000 DC AL3(0) 92100000 IOBCSW DS 0D 92160000 IOBCOMAD DC X'00000000' KEY,0000,COMMAND ADDRESS 92220000 IOBSTAT0 DC X'00' STATUS BYTE 0 92280000 IOBSTAT1 DC X'00' STATUS BYTE 1 92340000 IOBCNT DC X'0000' COUNT 92400000 IOBSIOCC DS XL1 92460000 IOBSTART DC AL3(0) 92520000 IOBWGHT DS XL1 92580000 IOBDCBPT DC AL3(0) 92640000 DS XL1 92700000 DS XL3 92760000 IOBINCAN DC X'0000' 92820000 IOBERRCT DS XL2 92880000 CHANDIS EQU CEAPEN-CHANEND 92940000 ABNDIS EQU AEAPEN-ABNEND 93000000 SCHEDIS EQU SCEDSSX-SCHEDSS 93060000 SIODIS EQU SIOTRAC-SIOENTER 41426 93090021 IOSENS0 EQU IOBSENS0 93120000 IOBECBCC EQU IOBECBPT 93180000 END 93240000 ./ ADD SSI=12011972,NAME=IGG0191A,SOURCE=0 TITLE 'IGG0191A -- VALIDITY CHECKING RTN FOR ACCESS METHODS' A37507 00100021 COPY LCGASMSW 00150002 IGG0191A CSECT 00200020 AIF ('&LIB' EQ 'LIB1').OSLIB CHECK FOR SYSTEM 00250002 * 00252002 * VS1 RELEASE 01 DELETIONS 00254021 * XM8332 00256002 * 00258002 * VS1 RELEASE 02 DELETIONS 00258121 * (REFER TO CODE FLAGGED SA61537 IN COL 65-71) XA01531 00258202 * 00275921 * VS1 RELEASE 3 CHANGES 00293821 *C489600 XA02040 00311521 * 00321521 * VS1 RELEASE 3.1 CHANGES 00323521 * XA05396 IS FLAGGED AS SA71221 XA05396 00325921 * 00327521 * VS2 RELEASE 01 DELETIONS 00329221 * 00346921 .OSLIB ANOP 00364621 * 00400020 * RELEASE 21.8 CHANGES 00450021 *C246540 (YA04498 IS ALSO FLAGGED AS SA71221) SA71221 00510021 * 00550021 * RELEASE 21 DELETIONS 00800021 *A156790,156794,156798,234100-234460 SA49404 00802001 *A156795 YM5516 00802401 *C234220-234240,232400 YM5516 00802801 *A246004-246090 SA51107 00803201 *1394 M1803 00804001 *1394 A46863 00806001 *1394 A44114 00808001 *1394075000,210600,215000,222000,230000-231000,233000,246050, S21042 00810001 *1394247740,295000-297000,480000,499000,589000-590000 S21042 00812001 *D300000,330020 SA53194 00814001 *1394 M0062 00816001 *1394001000,010995,019000-022000,036000-105000,123000-127000, A37507 00818001 *1394131000-140000,143000,146000,179000,246260,249046,266000, A37507 00820021 *1394299000-454000,489000,497000 A37507 00830021 *1394246130,246672-246676 A42897 00850021 *1394348000-455000,496000-502000 M0091 00870021 * SA55577 00880002 * SA48921 00890002 *D235000 SA61537 00892002 * 00894021 * RELEASE 20 DELETIONS 00900021 * IGG0191A RESEQUENCED IN RELEASE 20 01000020 *0970246140 M6478 01000220 * A38122 01000520 *0970298300-298600 M0693 01001020 *0970246340-246540 A34919 01002020 *0970 A33682 01005020 *0970 A34428 01010020 *0970 S20038 01020020 *0970 S20016 01050020 *0970105000 A31590 01070020 *0970247000-248000,251000-254000 A31304 01080020 *0970233200-233600,246210-246910 M0639 01090020 *0970 M0654 01095020 *0970249400 M0678 01097020 *0970224000 S20201 01097120 *0970118000-122000,124000-126000,129000-130000,132000-134000, 2670 01097320 *0970136000,138000-139000,141000,150500-151000,246340 2670 01097620 *0970249400 M1506 01098020 *0970 M2699 01099020 * M2882 01099620 * M3296 01099720 *0970 M1565 01099820 * 01100020 *STATUS CHANGE LEVEL - 06/12/74 01200021 * CHANGES IDENTIFIED BY 'DM0D' IN COLUMNS 68-71 INSERTED DM0D 01300020 * IN SUPPORT OF CHECKPOINT/RESTART - RELEASE 17 DM0D 01400020 * DM0D 01500020 * THIS MODULE WAS SPLIT INTO IGG0196A FOR RELEASE 19 01600020 * THIS MODULE WAS SPLIT AGAIN IN REL 21 INTO IGG0196I 01630021 * MOD FLOW IGG0191A - IGG0196I - IGG0196A 01660021 * 01700020 *FUNCTION THIS EXECUTOR IS ENTERED FOR USERS OF SAM AND EXCP 01800020 * DURING OPEN FOR VALIDITY CHECKING OF USER SPECIFIED 01820021 * PARAMETERS WHEN CODING THE DCB. 01840021 * CONFLICTING DCB PARAMETERS: 01860021 * - DCBMACRF OPPOSITE OF OPEN OPTION 01880021 * - IF USER SPECIFIED DCBBUFL & IT IS LESS THAN DCBBLKSI 01900021 * - DCBBLKSI NOT AT LEAST 4 BYTES LARGER THAN DCBLRECL FOR 01920021 * VARIABLE LENGTH RECORDS 01940021 * - DCBBLKSI NOT EQUAL TO DCBLRECL FOR FIXED LEN DATA SETS 01960021 * WHEN BOTH ARE SPECIFIED 01980021 * - DCBBLKSI NOT SPECIFIED FOR FIXED LEN DATA SETS A44114 01990021 * - FOR QSAM FIXED BLOCKED DATA SETS: 02000021 * - DCBLRECL NOT SPECIFIED 02020021 * - DCBBLKSI NOT MULT OF DCBLRECL & NOT SYSOUT 02040021 * - IF SYSOUT & DCBBLKSI NOT MERGED FROM JFCB 02060021 * - IF SYSOUT & DA NOT SPECIFIED IN UCBTBYT3 02080021 * - DCBBLKSI LESS THAN LRECL 02100021 * 02120021 * TESTING IS DONE TO SEE IF MERLIN/ZEUS CAN BE SUPPORTED WHEN 02140021 * SPECIFIED. 02160021 * 02180021 * THE BLKSIZE IS TESTED AND ADJUSTED 02200021 * 02300020 * GETMAIN FOR 3211 ERP WORKAREA M1803 02350021 * 02360021 *ENTRY POINT--IGG0191A 02400020 * 02500020 * ENTEREDFROM IGG0190M VIA XCTL 02600020 * IGG0190P 02700020 * 02800020 *INPUT-- DCB ADDRESS 02900020 * WORK AREA ADDRESS 03000020 * WHERE TO GO TABLE 03100020 * PARAMETER LIST 03200020 * CURRENT ENTRY IN WHERE TO GO TABLE 03300020 * CURRENT PARAMETER (DCB) 03400020 * 03500020 *EXITS - NORMAL XCTL TO IGG0196I TO CONTINUE PROCESSING 05500021 * ABNORMAL - XCTL TO PROB DET (IGG0196M) FOR WTP AND 013 ABEND 07500021 * 10600020 *TABLES/WORKAREA - SEE DSECTS AT END OF LISTING. 10700020 * 10800020 *ATTRIBUTES- RE-ENTRANT- RE-USABLE- SUPERVISOR MODE 10900020 * 11000020 * 11100020 * 11200020 * 11300020 ******************************************************************* 11400020 ********************************************************************* 11500020 * 11600020 * MASK'S TO TEST PARAMETER LIST WITH 11700020 COMMUTAB EQU 16 12800020 BFTEKR EQU X'20' DCBBFTEK=R S19015 14200020 RECFMB EQU X'10' BLOCKED RECORD FORMAT S19015 14400020 * BIT S19015 14500020 PS EQU X'40' PHYSICAL SEQUENTIAL I19119 14700020 EXCP EQU X'80' EXCP I19119 14800020 BSAM EQU X'20' BSAM I19119 14900020 QSAMBIT EQU X'01' QSAM INDICATOR BIT I19119 15000020 SYS EQU X'20' SYSIN/SYSOUT I19119 15200020 OUTPUT EQU X'0F' OUTPUT FLAG I19119 15300020 BLKSZMRG EQU X'10' BLOCKSIZE MERGE BIT IN I19119 15400020 * JFCBMASK+2 I19119 15500020 TIOTTERM EQU X'20' DEVICE IS TERMINAL (TSO) S20016 15550020 UORVREC EQU X'40' RECFM UNDEFIN OR VARIABLE M0639 15570020 UREC EQU X'C0' FORMAT U RECS 2670 15580020 VREC EQU X'40' FORMAT V RECS 2670 15590020 PRT3211 EQU X'09' FOR TESTING DEV TYP M1803 15600021 MICR3890 EQU X'16' 3890 DEVICE TYPE XL03123 15600103 UNITREC EQU X'08' UNIT TYPE = UNIT RECORD M1803 15600421 ERPWAOFF EQU X'0C' UCB OFFSET FOR 3211 M1803 15602021 * ERP WORKAREA M1803 15604021 ONE EQU 1 CONSTANT OF 1 M1803 15610021 NULL EQU 0 OFFSET OF ZERO M1803 15612021 TEN EQU 10 CONSTANT OF 10 M1803 15614021 FORR EQU 4 CONSTANT OF 4 M1803 15614421 THREE EQU 3 CONSTANT OF 3 M1803 15614821 D0 EQU 0 DISPLACEMENT OF ZERO S20201 15615020 D6 EQU 6 SIX BYTE DISPLACEMENT S20201 15620020 INOUTIN EQU X'03' MASK FOR OUTIN OR INOUT S20201 15630020 NOTEPT EQU X'04' NOTE - POINT MASK S20201 15635020 SAMPAM EQU X'42' SAM & PAM MASK S20201 15640020 QSAM EQU X'40' QSAM GET BIT S20201 15645020 SDFLAG EQU X'08' S.D. FLAG IN JFCB S20201 15650020 PCI EQU X'20' PCI TEST MASK S20201 15655020 TRKOVFLO EQU X'20' TRK OVERFLO MASK S20201 15660020 UTRKOVFL EQU X'E0' U - TRK OVFLO MASK S20201 15665020 FBTRKOV EQU X'B0' FB - TRK OVFLO MASK S20201 15670020 FSTDREC EQU X'08' F STANDARD MASK S20201 15675020 OUTIN EQU X'07' OUTIN FLAG SA48921 15677002 VS EQU X'48' VAR/SPANNED FORMAT MASK SA49404 15679001 RDBK EQU X'01' RDBACK OPTION MASK SA49404 15679401 NOTRDBK EQU X'03' OPTIONS NOT READBACK AS25516 15679501 VSRDBK EQU 221 INTERNAL ERROR CODE SA49404 15679801 OCR1 EQU X'1A' OCR DEVICE TYPE SA61537 15679902 OCR2 EQU X'1B' OCR DEVICE TYPE SA61537 15686602 OCR3 EQU X'1C' OCR DEVICE TYPE SA61537 15688602 * 15693302 * * 15700020 ****************************** ****************************** 15800020 * 15900020 * 16000020 * 16100020 * 16200020 * 16300020 *REGISTERS ARE REFERENCED SYMBOLICALLY WHERE APPROPRIATE 16400020 * 16500020 RDCB EQU 2 DCB REGISTER 16600020 RBASE EQU 3 BASE REGISTER 16700020 RCORE EQU 4 WORK AREA ADDRESS 16800020 RPAR EQU 5 TOP OF PARAMETER LIST 16900020 RWTG EQU 6 TOP OF WTG TABLE 17000020 RPARC EQU 7 CURRENT PARAMETER 17100020 RWTGC EQU 8 CURRENT TRANS LOAD 17200020 RTIOT EQU 9 USED HERE AS WRK REG AND COMM VECTOR ADDR. 17300020 RUCB EQU 10 USED HERE AS A COUNTER IN IOB GENERATION 17400020 RDEB EQU 11 DEB ADDRESS 17500020 RB EQU 12 WORK REG1 ** 17600020 RC EQU 13 WORK REG2 ** USED IN IOB GENERATION 17700020 RD EQU 14 WORK REG3 ** 17800020 RJ EQU 15 WORK REG4 M1803 17850021 RE EQU 0 WORK REG5 18000020 RF EQU 1 WORK REG6 18100020 * 18200020 * 18300020 ASCII EQU X'08' ASCII TAPE S20038 18350020 * 18400020 *********************************************************************** 18500020 * 18600020 * 18700020 OABD056 EQU 56 S21042 18710021 OABD057 EQU 57 S21042 18720021 OABD058 EQU 58 S21042 18730021 OABD072 EQU 72 S21042 18740021 OABD083 EQU 83 S21042 18750021 OABD0222 EQU 222 ABEND CODE,INOUT/OUTIN SA5110 18760001 * 18800020 * 18900020 BALR RBASE,0 19000020 USING PO,RBASE 19100020 USING IHADCB,RDCB 19200020 USING FORCORE,RCORE 19300020 USING DEB,RDEB 19400020 USING TCB,RD 19500020 USING TIOT,RTIOT 19600020 USING UCBOB,RUCB 19700020 AIF ('&LIB' EQ 'LIB1').OS100 19710002 USING PDS2,RWTG XM8332 19750002 .OS100 ANOP 19760002 * 19800020 * 19900020 * 20000020 * 20100020 PO EQU * 20200020 * 20300020 L RDCB,0(RPARC) GET DCB ADDRESS 20400020 AIF ('&LIB' EQ 'LIB1').OS200 20402002 NI PDS2INDC,X'FF'-PDS2LUSR SET LOW-ORDER 5 BITS TO XM8332 20410002 OI PDS2INDC,BIT4 8 HALF-WORD OF USER DATA XM8332 20420002 * IN THE LOAD PARM LIST XM8332 20422002 .OS200 ANOP 20424002 * NEXT INSTRUCTION IS USED AS AN INLINE CONSTANT OF FOUR 20430021 FOUR EQU *+2 A37507 20460021 L RCORE,4(RWTGC) GET WORK AREA 20500020 L RD,COMMUTAB CALCULATE TCB ADDRESS 20600020 L RD,0(0,RD) 20700020 L RD,4(0,RD) TCB ADDR 20800020 L RTIOT,TCBTIO 20900020 AH RTIOT,DCBTIOT RESET TIOT POINTER 21000020 TM TIOELINK,TIOTTERM IS THIS TSO? S20016 21030020 BO MAINUNIT BR. IF YES S21042 21060021 L RUCB,TIOEFSRT GET UCB PTR. WILL BE A SUB-UCB 21100020 * IF DEVICE=2321 21200020 * DETERMINE WHETHER POINTER IN RUCB IS TO MAIN OR SUB-UCB. NEED MAIN. 21300020 CLI UCBID,X'FF' CHECK FOR MAIN UCB. 21400020 BE MAINUNIT BR. IF MAIN S21042 21500021 USING DATACELL,RUCB ADDRESSING FOR SUB-UCB. 21600020 * OBTAIN MAIN UCB ADDRESS FROM THE SUB-UCB PTR IN RUCB. 21700020 LH RF,DCELBBNR PICK UP BB. 21800020 SLL RF,4 TIMES 16. 21900020 LA RF,DATACELL-UCBOB(RF) 16(BB) + MAIN UCB LENGTH. 22000020 SR RUCB,RF RUCB=MAIN UCB ADDRESS. 22100020 MAINUNIT EQU * S21042 22200021 TM DCBMACRF,EXCP EXCP A. M. A26010 22300020 BO NOSDIR YES S20201 22400020 TM 0(RPARC),X'07' DCB OPENED FOR INPUT, A26010 22500020 * RDBACK, INOUT, OR UPDAT 22600020 BO TSTWP NO, MUST BE OUTPUT OR A26010 22700020 * OUTIN A26010 22800020 TM DCBMACRF,X'60' GET OR READ SPECIFIED A26010 22900020 BNZ A26010A YES, CONTINUE S21042 22960021 LA RE,OABD057 PUT INTERNAL CODE IN REG S21042 23020021 * 0 S21042 23080021 B CALLPD CALL PROB DET S21042 23140021 TSTWP TM DCBMACRF+1,X'60' WRITE OR PUT SPECIFIED A26010 23200020 BNZ TSTOCR YES, CONTINUE AS25516 23240001 LA RE,OABD058 PUT INTERNAL CODE IN REG S21042 23280021 * 0 S21042 23320021 B CALLPD S21042 23360021 A26010A EQU * A26010 23400020 TM 0(RPARC),NOTRDBK DCB OPTION = RDBACK? SA49404 23410001 BNM TSTOCR IF YES, MAKE NEXT TEST SA49404 23420001 TM 0(RPARC),RDBK DCB OPTION=RDBACK AS25516 23422001 BNO TSTOCR IF YES, DROP THRU AS25516 23424001 TM DCBRECFM,VS VAR/SPANNED RECORD FMT? SA49404 23430001 BNO TSTOCR IF YES, GO SET ERR CODE SA49404 23440001 LA RE,VSRDBK SET INTERNAL CODE SA49404 23442001 B CALLPD GO TO PROBLEM DETM RTN SA49404 23444001 TSTOCR EQU * VAR/SPANNED NOT SPEC SA49404 23446001 USING UCBOB,RUCB SA61537 23448002 CLI UCBTBYT4,OCR1 IS IT A 1285 OCR ? SA61537 23450002 BE CONTIN3 YES, GET OUT SA55577 23460002 CLI UCBTBYT4,OCR2 IS IT A 1287 OCR ? SA61537 23470002 BE CONTIN3 YES, GET OUT SA55577 23480002 CLI UCBTBYT4,OCR3 IS IT A 1288 OCR ? SA61537 23490002 BE CONTIN3 YES, GET OUT SA55577 23492002 TM DCBDSORG,SAMPAM SAM OR PAM S20201 23502020 BZ NOSDIR SCH DIR NOT ALLOWED S20201 23504020 TM DCBOPTCD,DCBSRCHD IF THE SCH DIR OPTION IS S20201 23506021 BNO NOSDIR SPECIFIED IN THE DCB S20201 23508020 TM UCBTBYT3,UCB3DACC TEST TO SEE IF IT'S S20201 23510020 BNO NOSDIR SUPPORTABLE S20201 23512020 TM D0(RPARC),OUTPUT OUTPUT ONLY IS NOT S20201 23514020 BO NOSDIR SUPPORTED S20201 23516020 BZ CHKMORE FOR INPUT ONLY BR S20201 23518020 TM D0(RPARC),INOUTIN IF ITS NOT INOUT OR S20201 23520020 BNO NOSDIR OUTIN, DONT SET THE BIT S20201 23522020 CHKMORE EQU * S20201 23524020 TM DCBRECFM,FSTDREC IF THE FORMAT IS F STD S20201 23526020 BO TESTMORE THEN TEST FURTHER S20201 23528020 TM DCBRECFM,UTRKOVFL ELSE TEST FOR U S20201 23530020 * FORMAT WITH TRKOVFLO 23532020 BO NOSDIR IN WHICH CASE DONT SET S20201 23534020 * THE S.D. BIT. 23536020 TM DCBRECFM,FBTRKOV FB - TRK OVFLO IS ALSO S20201 23538020 BO NOSDIR NOT SUPPORTED S20201 23540020 B OK BRANCH TO CONTINUE S20201 23542020 * TESTING S20201 23544020 TESTMORE EQU * S20201 23546020 TM DCBRECFM,TRKOVFLO NOW UNLESS IT'S FIXED S20201 23548020 * STD S20201 23550020 BZ NOSDIR WITH TRKOVFLO, DONT S20201 23552020 * PROVIDE SR.DIR. 23554020 OK EQU * S20201 23556020 TM DCBOPTCD,PCI NOR IS PCI S20201 23558020 BO NOSDIR SO BR AROUND FOR THEM S20201 23560020 TM DCBMACRF,QSAM QSAM USED S20201 23562020 BO SOP235X BRANCH IF YES S20201 23564020 TM DCBMACRF,NOTEPT NOTE - POINT IS NOT S20201 23566020 BO NOSDIR SUPPORTED --- S20201 23568020 TM DCBBFTEK,BFTEKR OFFSET RD S20201 23570020 BO NOSDIR BRANCH IF YES S20201 23572020 * 23574020 SOP235X EQU * S20201 23576020 * 23578020 * 23580020 OI JFCBMASK+D6,SDFLAG SET S.D. FLAG IN JFCB S20201 23582020 * 23584020 NOSDIR EQU * S20201 23586020 * 23600020 * BSAM - QSAM BLOCKSIZE TEST 23700020 TM DCBDSORG,PS PHYSICAL SEQUENTIAL SPECIFIED I19119 23800020 BNO CONTINUE BRANCH IF NOT PS I19119 23900020 TM DCBMACRF,EXCP TEST FOR EXCP I19119 24000020 BO CONTINUE BRANCH IF EXCP I19119 24100020 TM DCBMACRF,BSAM TEST FOR BSAM INPUT I19119 24200020 BO TSTBLKSZ BRANCH IF BSAM INPUT I19119 24300020 TM DCBMACRF+1,BSAM TEST FOR BSAM OUTPUT I19119 24400020 BO TSTBLKSZ BRANCH IF BSAM OUTPUT I19119 24500020 OI DCBCIND2,QSAMBIT SET QSAM INDICATOR I19119 24600001 TM D0(RPARC),OUTPUT DCB OPTION TEST SA51107 24600401 BO AROUND VALID FOR QSAM SA51107 24600801 TM D0(RPARC),INOUTIN TEST INVALID OPTIONS SA51107 24601001 BNO AROUND ELSE INVALID FOR QSAM SA51107 24604601 LA RE,OABD0222 INTERNAL ABEND CODE SA51107 24606601 B CALLPD GO TO PROBLEM DETM RTN SA51107 24608601 AROUND EQU * INOUT OR OUTIN NOT SPEC SA51107 24609001 CLC DCBBUFL(2),ZEROO DID USER SPECIFY BUF LEN? M0639 24609601 BE TEST NO, BR AROUND TEST M0639 24613301 CLC DCBBLKSI(2),DCBBUFL TEST TO SEE IF BLKSIZE IS M0639 24617001 * GREATER THAN BUF LEN 24620701 LA RE,OABD072 LOAD INTERNAL ABEND CODE S21042 24624401 BH CALLPD CALL PROB DET S21042 24628101 TEST EQU * M0639 24631801 TM DCBOPTCD,ASCII ASCII TAPE? S20038 A31304 24635501 BO CONTINUE YES - BRANCH A42897 24639201 TM TIOELINK,TIOTTERM IS THIS TSO M0693 24642901 BO CONTINUE BRANCH IF YES A37507 24646601 TM DCBRECFM,UREC ARE RECS FORMAT U? 2670 24650301 BNM CONTINUE YES, BRANCH SA71221 24654021 TM DCBRECFM,VREC ARE RECS FORMAT V? 2670 24655020 BC 8,FIXREC NO, BR AROUND TEST FOR FORMAT 2670 S 24656020 * V REC 2670 24657020 TM DCBRECFM,X'08' ARE SPANNED RECS BEING M2699 24657220 * USED? M2699 24657420 BC 1,CONTINUE YES, LRECL CAN BE LARGER M2699 24657620 * THAN BLKSIZE-BR AROUND TEST 24657820 * 24658020 * FOR VAR LEN RECORDS, BLKSIZE MUST BE AT LEAST 4 BYTES GREATER THAN 24659020 * LRECL. 24660020 * 24661020 LH RE,DCBLRECL GET LRECL FOR TEST 2670 24662020 AH RE,FOUR ADD 4 BYTES FOR BDW LENGTH 2670 24663020 CH RE,DCBBLKSI LRECL EQUAL OR LESS THAN 2670 24664020 * BLKSIZE? 2670 24665020 BNH CONTINUE YES, CONTINUE PROCESSING 2670 24666020 B DCBERROR NO, ABEND 2670 24667020 FIXREC EQU * 2670 24668020 CLI UCBTBYT4,MICR3890 DEVICE A 3890 ? XL03123 24670003 BE CONTIN2 YES,BYPASS RECFM TEST XL03123 24672003 TM DCBRECFM,RECFMB RECFM BLOCKED? M0639 24674020 BC 1,TSTBLKSZ YES, TEST LRECL MULT M0639 24694020 * BLKSI M0639 24714020 * RECFM IS FIXED UNBLOCKED 24734020 CLC DCBBLKSI,ZEROO BLKSIZE NOT SPECIFIED ? A44114 24734421 BE DCBERROR IF NOT - ABEND A44114 24734821 * USER DOES NOT HAVE TO SPECIFY LRECL FOR RECFM=F. BLOCKSIZE IS ASSUMED 24736020 * THEREFORE WE SHOULD TEST TO SEE IF USER SPECIFIED LRECL BEFORE MAKING 24738020 * FOLLOWING TEST. 24740020 CLC DCBLRECL(2),ZEROO DID USER SPECIFY LRECL? M0654 24742020 BE CONTINUE NO, DO NOT TEST EQ TO M0654 24744020 * BLKSIZE M0654 24746020 CLC DCBLRECL(2),DCBBLKSI LRECL EQ BLKSIZE? M0639 24754020 LA RE,OABD083 LOAD INTERNAL ABEND CODE S21042 24764021 BNE CALLPD CALL PROB DET S21042 24774021 B CONTINUE LRECL O.K. M0639 24794020 TSTBLKSZ EQU * TEST BLOCKSIZE AS A MULTIPLE OF LRECL I19119 24900020 * THE FOLLOWING TEST ALSO FIXES APAR NO. 34919 24901020 * THE FOLLOWING TEST FOR V RECS IS MADE TO KEEP BLKSIZE FROM BEING 24902020 * ADJUSTED TO A MULTIPLE OF LRECL FOR VARIABLE & UNDEFINED RECS 24903020 * 24904020 TM TIOELINK,TIOTTERM IS THIS TSO M1565 24904320 BO CONTINUE BRANCH IF YES A37507 24904621 TM DCBRECFM,UORVREC ARE RECS U OR V? M0654 24905020 BC 1,CONTINUE YES, BYPASS LRECL TESTS M0654 24906020 LH RC,DCBBLKSI LOAD BLKSIZE FOR DIVIDE M0639 24910020 LH RE,DCBLRECL LOAD LRECL FOR DIVIDE M0639 24920020 LTR RE,RE TEST FOR LRECL SPECIFIED M0639 24930020 BZ QSAMTEST BRANCH IF LRECL NOT 24940020 * SPECIFIED M0639 24950020 SR RB,RB CLEAR REGISTER FOR DIVIDE I19119 25000020 DR RB,RE DIVIDE BLOCKSIZE BY LRECL I19119 25500020 LTR RB,RB TEST BLOCKSIZE MULTIPLE OF I19119 25600020 * LRECL I19119 25700020 BZ CONTINUE BRANCH IF EVEN MULTIPLE I19119 25800020 * 25900020 ***** OCIP 294 ******************************************************** 26000020 * IF A DATA SET IS SYSOUT ON DIRECT ACCESS WITH BLOCKSIZE * 26100020 * SPECIFIED IN THE JCL AND BLOCKSIZE IS NOT AN EVEN MULTIPLE * 26200020 * OF LRECL, THEN THE BLOCKSIZE WILL BE REDUCED TO THE NEAREST * 26300020 * EVEN MULTIPLE OF LRECL. * 26400020 * 26500020 TM JFCBTSDM,SYS CHECK FOR SYSIN/SYSOUT IN I19119 26700020 * JFCB I19119 26800020 BNO QSAMTEST BRANCH IF NOT SYSIN/SYSOUT I19119 26900020 TM 0(RPARC),OUTIN CHECK IF OUTPUT SPECIFIED SA48921 27000002 BNO QSAMTEST BRANCH IF OUTPUT NOT I19119 27100020 * SPECIFIED I19119 27200020 * 27300020 TM JFCBMASK+2,BLKSZMRG TEST FOR BLOCKSIZE MERGED I19119 27400020 * FROM JFCB I19119 27500020 BNO QSAMTEST BRANCH IF NOT MERGED I19119 27600020 * 27700020 TM UCBTBYT3,UCB3DACC TEST FOR DA SPECIFICATION I19119 27800020 BNO QSAMTEST BRANCH IF SYSOUT NOT ON DA I19119 27900020 * 28000020 LTR RC,RC TEST FOR BLOCKSIZE LESS THAN I19119 28100020 * LRECL I19119 28200020 BZ QSAMTEST BRANCH IF BLOCKSIZE LESS THAN I19119 28300020 * LRECL I19119 28400020 MR RB,RE ADJUST BLOCKSZE TO MULTIPLE I19119 28500020 * OF LREC I19119 28600020 STH RC,DCBBLKSI UPDATE DCB BLOCKSIZE I19119 28700020 STH RC,JFCBLKSI UPDATE JFCB BLOCKSIZE I19119 28800020 B CONTINUE BRANCH TO CONTINUE PROCESSING I19119 28900020 * 29000020 QSAMTEST EQU * ABEND IF QSAM - CONTINUE IF BSAM I19119 29100020 TM DCBCIND2,QSAMBIT TEST FOR QSAM OR BSAM I19119 29200020 BNO CONTINUE BRANCH IF BSAM I19119 29300020 * 29400020 DCBERROR EQU * S21042 29450021 LA RE,OABD056 PUT INTERNAL CODE IN REG S21042 29500021 * 0 S21042 29550021 CALLPD EQU * S21042 29600021 DMABCOND (0),PDLOAD,RETURN=NONE,RES=NO,REGSAVE=YES S21042X29650021 GO TO PROB DET FOR 013 ABEND 29700021 B TCTLRTN S21042 29750021 CONTINUE EQU * 10164 29800020 * MUST DO A GETMAIN FOR A 3211 ERP WORKAREA IN FIRST M1803 33010021 * LOAD OF OPEN EXECUTORS SO WORKAREA WILL BE AVAILABLE M1803 33020021 * TO UCS/FCB EXECUTORS WHEN IO IS DONE M1803 33030021 CLI UCBTBYT3,UNITREC UNIT RECORD? M1803 33040021 BNE CONTIN2 NO, DON'T GET WORKAREA M1803 33042021 CLI UCBTBYT4,PRT3211 3211 PRINTER? M1803 33044021 BNE CONTIN2 NO, DON'T GET WORK AREA M1803 33046021 SR RB,RB ZERO REG M1803 33050021 LA RC,ONE GET VALUE OF 1 M1803 33100021 L RD,UCBXTADR GET UCB EXTEN ADDR M1803 33150021 LA RD,ERPWAOFF(RD) GET ERP WORK AREA OFFSET M1803 33200021 IC RB,NULL(RD) NO. OF DCB OPENED M1803 33250021 AR RB,RC INCR NO. OF DCB'S M1803 33300021 STC RB,NULL(RD) ST IN UCB M1803 33350021 CLR RB,RC 1ST DCB? M1803 33400021 BNE CONTIN2 NO, BR AROUND GTMAIN M1803 33450021 LA RJ,DXCCW1 RETURN ADDR FOR GETMAIN M1803 33500021 LA RF,DXCCW3 WORK AREA M1803 33550021 MVC NULL(TEN,RF),GETMNLST GETMAIN PARM LIST M1803 33600021 ST RJ,4(RF) ST GTMAIN ADDR M1803 33610021 SVC 4 ISSUE GTMAIN M1803 33650021 LTR RJ,RJ SUCCESSFUL? M1803 33700021 BE GTMANUCB YES, BR M1803 33750021 XC NULL(FORR,RD),NULL(RD) NO, ZERO ADDR M1803 33800021 B CONTIN2 M1803 33850021 * ACCESS METHOD FOR OCR DEVICES 33852002 CONTIN3 EQU * SA55577 33854002 TM DCBMACRF,BSAM IS THIS BSAM INOUT? SA55577 33856002 BO CONTIN2 YES - GET NEXT LOAD SA55577 33858002 TM DCBMACRF+1,BSAM IS THIS BSAM OUTPUT? SA55577 33858402 BO CONTIN2 YES - GET NEXT LOAD SA55577 33858802 OI DCBCIND2,QSAMBIT NO - SET QSAM INDICATOR SA55577 33859202 B CONTIN2 GET NEXT LOAD MODULE SA55577 33859602 GTMANUCB EQU * M1803 33860021 MVC ONE(THREE,RD),DXCCW1+ONE GETMAIN ADDR TO UCB M1803 33900021 CONTIN2 EQU * 33950021 MVC 0(5,RWTGC),MOD196I MOVE MOD 196I'S ID M0091 39000021 * 45600020 ********************************************************************* 45700020 * 45800020 RELOOP LA RWTGC,WGOFF(0,RWTGC) UPDATE WHERE TO GO ENTRY 45900020 LA RPARC,PLOFF(0,RPARC) UPDATE PARA LIST ENTRY 46000020 CLC 0(2,RWTGC),AMIDCNST THIS RT NEEDED AGAIN 46100020 BCR 8,RBASE YES BR BACK TO BEGINNING 46200020 * 46300020 CLC 0(2,RWTGC),OPIDCNST END OF TABLE 46400020 BC 7,RELOOP NO BRANCH 46500020 * 46600020 LR RPARC,RPAR 46700020 LA RWTGC,WAOFF(0,RWTG) RE INIT WTG LIST 46800020 ZCHEK CLI 0(RWTGC),X'00' IS THIS ENTRY COMPLETE 46900020 BC 7,TCTLRTN NO XCTL 47000020 * 47100020 LA RWTGC,WGOFF(0,RWTGC) GET NEXT ENTRY 47200020 LA RPARC,PLOFF(0,RPARC) 47300020 BC 15,ZCHEK 47400020 * 47500020 TCTLRTN EQU * 47600020 MVC 6(2,RWTG),0(RWTGC) STORE ID IN WTG TABLE 47700020 MVC 14(3,RWTG),2(RWTGC) MOVE TTR INTO TABLE 47800020 * 47900020 LA 15,DXXCTL SET UP FOR XCTL S21042 48000021 ** 48100020 XCTL DE=(RWTG),SF=(E,(15)) 48200020 * 48300020 WAOFF EQU 32 OFFSET OF FIRST ENTRY IN WTG TABLE 48400020 PLOFF EQU 4 OFFSET OF DCB ENTRIES 48500020 WGOFF EQU 8 OFFSET OF WTG ENTRIES 48600020 OPIDCNST DC C'0S' 48700020 AMIDCNST DC C'1A' 48800020 ZEROO DC X'0000' CONSTANT FOR BUFL TEST M0639 48950020 GETMNLST DC X'0000023A0000000020FF' GTMAIN PARM LIST XA02040 48960003 * 49000020 ********************************************************************* 49100020 * 49200020 * 49300020 * 49400020 * 49500020 XCTLTABL ID=(MOD196I,6I,PDLOAD,6M),SVC=019 S21042 49900021 ********************************************************************* 50300020 SRT DSECT 50400020 IEFUCBOB 50500020 * 50600020 AIF ('&LIB' EQ 'LIB1').OSMAC 50610002 * DEFINITION OF PDS DIRECTORY TO LOAD THE MODULES XM8332 50650002 IHAPDS 50660002 .OSMAC ANOP 50670002 EJECT 50700020 DCBD DSORG=PS 50800020 CVT DSECT 50900020 CVT 51000020 * TASK CONTROL BLOCK 51100020 CNOP 0,4 51200020 TCB DSECT 51300020 TCBRBP DS F PO9NTER TO EXECUTING RB 51400020 TCBPIE DS F POINTER TO PROG. INTERRUPT EL. 51500020 TCBDEB DS F POINTER TO DEB QUEUE 51600020 TCBTIO DS F POINTER TO TIOT 51700020 TCBCMP DS F TASK COMPLETION CODE 51800020 TCBTRN DS F TESTRAN FIELD 51900020 TCBMSS DS F DATA BLOCK QUEUE ELEMENT POINTER 52000020 TCBPKF DS CL1 RESERVED FOR FUTURE USE 52100020 TCBFLGS DS FL5 FLAG BYTES 52200020 TCBLMP DS CL1 RESERVED FOR FUTURE USE 52300020 TCBDSP DS CL1 RESERVED FOR FUTURE USE 52400020 TCBLLS DS F POINTER TO LOAD LIST 52500020 TCBJLB DS F POINTER TO JOBLIB DCB 52600020 TCBJSE DS F LIST OF INACTIVE PROGRAMS ADDR. 52700020 TCBGRS DS CL64 GENERAL REGISTER SAVE AREA 52800020 TCBIDF DS CL1 TCB IDENTIFIER FIELD 52900020 TCBFSA DS CL3 POINTER TO 1ST PROB.PROG.SAVEAR 53000020 TCBTCB DS F RESERVED FOR FUTURE USE 53100020 TCBTME DS F POINTER TO TIMER ELEMENT 53200020 DS CL24 53300020 TIOT DSECT 53400020 TIOELNGH DS CL1 LENGTH OF THIS ENTRY 53500020 TIOESTTA DS CL1 STATUS -A- 53600020 TIOERLOC DS CL2 REL. LOC OF POOL 53700020 TIOEDDNM DS 2F DDNAME 53800020 TIOEJFCB DS 1F JFCB DISK ADDR 53900020 TIOESTTB DS 0CL1 54000020 TIOEFSRT DS CL4 54100020 DS CL1 54200020 * TIOT POOL ENTRY 54300020 TIOPNSLT DS XL1 NR.OF SLOTS FOR POOL 54400020 DS CL1 54500020 TIOPNSRT DS XL1 NR.OF DEVICES (FILLED 54600020 * SLOTS) 54700020 TIOPPOOL DS CL8 POOL NAME 54800020 TIOPSTTB DS XL1 STATUS OF SLOT 54900020 TIOPSLOT DS XL3 SRT ADDRESS OR EMPTY SLOT 55000020 TIOTFEND DS 1F FINAL END OF AN ENTRY 55100020 TIOELINK EQU TIOERLOC+1 S20016 55150020 SPACE 1 55200020 * DATA EXTENT BLOCK (UNTIL PROTIOS CHANGES) 55300020 DEB DSECT 55400020 DEBNMSUB DS 0CL1 55500020 DEBTCBAD DS CL4 55600020 DEBAMLNG DS 0CL1 55700020 DEBDEBAD DS CL4 55800020 DEBOFLGS DS 0CL1 55900020 DEBIRBAD DS CL4 56000020 DEBOPATB DS 0CL1 56100020 DEBSYSPG DS CL4 56200020 DEBNMEXT DS 0CL1 56300020 DEBUSRPG DS CL4 56400020 DEBPRIOR DS 0CL1 56500020 DEBECBAD DS CL4 56600020 DEBPROTG DS 0CL1 56700020 DEBDEBID DS 0CL1 56800020 DEBDCBAD DS CL4 56900020 DEBEXSCL DS 0CL1 57000020 DEBAPPAD DS CL4 57100020 DEBDVMOD DS 0CL1 57200020 DEBUCBAD DS CL4 57300020 DEBTVLSQ DS 0CL2 VOL SEQ FOR TAPE 57400020 DEBBINUM DS CL2 57500020 DEBTVLNM DS 0CL2 NO OF VOL FOR TAPE 57600020 DEBSTRCC DS CL2 57700020 DEBSTRHH DS CL2 57800020 DEBENDCC DS CL2 57900020 DEBENDHH DS CL2 58000020 DEBNMTRK DS CL2 58100020 * FOR ADDITIONAL EXTENT ON DIRECT ACCESS THE FOLLOWING FIELDS 58200020 * WILL HAVE TO BE OFFSET ANOTHER 16 BYTES 58300020 DEBVOLSQ DS H 58400020 DEBVOLNM DS H 58500020 * FOR EACH SUBROUTINE LOADED BUMP THIS OFFSET BY 2 58600020 DEBSUBID DS H 58700020 TITLE 'FORMAT OF GOTTEN CORE' 58800020 IECDSECS MAIN,EXPAND=YES S21042 58900021 CCWOFSET EQU DXCCW12-FORCORE CCW RELOCATABLE OFF SET FOR DXCCW12 59100020 DCBOFSET EQU DCBDEBAD-IHADCB DEB RLCATBL OFFSET IN DCB 59200020 END 59300020 59400020 59500020 59600020 59700020 59800020 ./ ADD SSI=07011385,NAME=IGG0191B,SOURCE=0 TITLE 'IGG0191B MAIN EXECUTOR' 00020000 COPY LCGASMSW Y01021 00020400 IGG0191B CSECT 00021000 AIF ('&LIB' EQ 'LIB1').OSLIB CHECK SYSTEM 00021403 * VS1 RELEASE 03 DELETIONS 00021503 * 00023303 * (REFER TO CODE FLAGGED AS SA65964) XA02865 00025303 .OSLIB ANOP 00025703 * 00026003 * RELEASE 21 DELETIONS/CHANGES 00027803 *0297062200 A47713 00029603 *0297070320-070360 M1802 00031403 *0297053000,053600,054020-054160 M1306 00033203 *0297053000,053600 A43247 00035003 *0297004800,030700,035320,056200,056380-056384,056392-056396, S21042 00036803 *0297105600,107800,108000-108100,108200,113200,117000 S21042 00038603 *0297 A44469 00040403 *D037300-042800 SA53194 00042203 * SA65964 00042603 * RELEASE 20 DELETIONS/CHANGES 00044003 *1331036400,117800-121800 S20016 00045803 *1331000237,036066 M0001 00047603 *1331045030-045090 M0006 00049403 *1331125500 M0005 00051203 *1331000220 A32172 00053003 *1331027050,033060,036000-036180,133460 M1227 00054803 *1331 M3415 00056603 * RELEASE 18 DELETIONS 00058403 *0751108000 8M616 00060203 *0751020800,021800,059610-059710 DM0P 00062003 * RELEASE 19 DELETIONS 00063803 *1396 S19015 00065603 *1396001400-001600,003000-005200,075200-098950,113000-116100 S19033 00067403 *1396000220-000235,000270-000300 A27549 00069203 *1396046020-046140 M4211 00071003 * 00072803 * RELEASE 21.8 CHANGES/DELETIONS 00073221 *A045040-045102,045328 SA61584 00073621 * 00074021 * RELEASE VS1-3.1 CHANGES/DELETIONS 00074421 *XA03529 IS FLAGGED AS SA61584 XA03529 00074521 *STATUS CHANGE LEVEL 010 00074603 *FUNCTION/OPERATION: THIS ROUTINE SUPPLEMENTS THE INITIAL OPEN ROUTINE. 00076403 * IT PERFORMS GENERAL AND SPECIFIC FUNCTIONS FOR THE SEQUENTIAL 00078203 * ACCESS METHOD(QSAM,BSAM,EXCP). 00080000 * IT SETS INDICATORS FOR THE APPROPRIATE ACCESS METHOD AND DEVICE 00100000 * CLASS. 00120000 * 00180000 *ENTRY POINT-IGG0191B ENTERED FROM IGG0191A BY USE OF THE XCTL MACRO. 00200000 * 00220000 *INPUT: SEE DESCRIPTION OF REGISTERS. 00240000 *OUTPUT: SEE DESCRIPTION OF REGISTERS. 00260000 *EXTERNAL ROUTINES: NONE. 00280000 *EXITS - NORMAL XCTL TO IGG0196B 00330019 * IGG0191B WAS SPLIT INTO IGG0196B FOR REL 19 00380019 * 00430019 *EXITS - ERROR XCTL TO PROBLEM DETERMINATION (IGG0196M) 00460021 * TO ISSUE WTP AND 013 ABEND 00490021 * 00540000 *TABLES/WORKAREAS: WHERE TO GO TABLE(WTG) 00560000 * BYTE 0-7 NAME 00580000 * BYTE 8-10 RELATIVE DISK ADDRESS(TTR) OF FIRST RECORD 00600000 * BYTE 11 CONCATENATION NUMBER 00620000 * BYTE 12 ZERO 00640000 * BYTE 13 ALIAS INDICATOR AND USER DATA FIELD DESCRIPTOR. 00660000 * ALIAS INDICATOR 1 BIT 00680000 * NUMBER OF TTRS IN USERS DATA FIELD 2 BITS 00700000 * BYTE 14-16 TTR OF FIRST TEXT RECORD 00720000 * BYTE 17 ZERO 00740000 * BYTE 18-19 TTR OF NOTE LIST OR SCATTER LIST 00760000 * BYTE 20 TRANSLATION TABLE 00780000 * BYTE 21 ZERO OR NUMBER OF ENTRIES IN THE NOTE LIST 00800000 * BYTE 22-23 ATTRIBUTES 00820000 * BYTE 24-26 TOTAL CONTIGUOUS MAIN STORAGE REQUIRED FOR MODULE 00840000 * BYTE 27-28 LENGTH OF FIRST TEXT RECORD 00860000 * BYTE 29 LENGTH OF WTG TABLE(IN DOUBLE WORDS) 00880000 * BYTE 30-31 PATH THROUGH LOADS OF ROUTINES 00900000 * BYTE 32-34 IDTTR OF EXECUTOR FOR FIRST DCB 00920000 * BYTE 35 ADDRESS OF STORAGE FOR DCB 00940000 * BYTE 36-39 TABLE OF IDTTR'S 00960000 * BYTE 32+N(8) IDTTR OF EXECUTOR FOR N TH DCB (3 BYTES) 00980000 * ADDRESS OF STORAGE FOR DCB (1 BYTE ) 01000000 * IDTTR OF LAST ROUTINE LOAD (3 BYTES) 01020000 * NOT USED (1 BYTE ) 01040000 * 01060000 * WORKAREA- SEE 'FORCORE DSECT' (IECDSECT) IN THIS LISTING 01080000 * 01100000 *ATTRIBUTES: REENTRANT, REUSABLE. 01120000 *NOTES: PCI IS PARTIALLY INCLUDED BUT CAN NOT BE SPECIFIED. 01140000 * 01160000 * 01180000 * 01200000 * 01220000 * REGISTER CONVENTIONS USED THROUGH OUT ALL OPEN PASSES 01240000 * 01260000 *********************************************************************** 01280000 * 01300000 * 01320000 RE EQU 0 WORK/PARAMETER REGISTER 01340000 RF EQU 1 WORK/PARAMETER REGISTER 01360000 RDCB EQU 2 ADDR OF USERS DCB 01380000 RBASE EQU 3 BASE REGISTER 01400000 RCORE EQU 4 ADDR OF OPEN WORK AREA 01420000 RPAR EQU 5 PARAMETER LIST 01440000 RWTG EQU 6 START OF WTG 01460000 RPARC EQU 7 CURRENT ENTRY IN PARAMETER LIST 01480000 RWTGC EQU 8 CURRENT ENTRY IN WTG TABLE 01500000 RTIOT EQU 9 TIOT ADDR/WORK REGISTER 01520000 RUCB EQU 10 UCB ADDR/WORK REGISTER 01540000 RDEB EQU 11 DEB ADDRESS 01560000 RA EQU 11 01580000 RB EQU 12 WORK REGISTER 01600000 RC EQU 13 WORK REGISTER 01620000 RD EQU 14 WORK/PARAMETER REGISTER 01640000 RJ EQU 15 WORK/PARAMETER REGISTER 01660000 * MASK'S TO TEST PARAMETER LIST WITH 01680000 * 01700000 OUTP EQU X'0F' 01720000 INPUT EQU X'0F' INPUT MASK A27549 01725019 VOLFULL EQU X'20' VOLUME FULL MASK A27549 01730019 DISPNEW EQU X'C0' DATA SET STATUS MASK A27549 01735019 * 01740000 ********************************************************************* 01760000 * 01780000 * 01800000 * OFFSET FOR PARAMETER TESTS 01820000 * 01840000 DISPSN EQU X'0' 01860000 * 01880000 * 01900000 ********************************************************************* 01920000 * 01940000 * MASK'S USED TO TEST OPTION FIELDS IN DCB 01960000 * 01980000 * 02000000 * 02020000 DOUBLE EQU X'01' 02040000 P2 EQU 2 CONSTANT OF 2 M0006 02046020 SHIFTCON EQU 4 SHIFT CONSTANT XL03123 02048003 LRECLMIN EQU 12 LRECL CONSTANT XL03123 02050003 LRECLMAX EQU 48 LRECL CONSTANT XL03123 02050403 DEBLRECL EQU 46 OFFSET OF LRECL IN DEB M0006 02052020 * 02060000 * 02080000 NOTF EQU X'40' MASK FOR RECFM=F XL03123 02082003 BLOCKED EQU X'10' MASK FOR RECFM=XB XL03123 02084003 PORG EQU X'02' MASK FOR DSORG=PO IN DCB DM0P 02090018 STOWB EQU X'80' 02100000 OVRFLO EQU X'20' 02120000 PCI EQU X'20' 02140000 CONCAT EQU X'FF' 02160000 * 02180000 *******************************************************************DM0P 02181018 * DM0P 02182018 * MASKS USED TO TEST OPTION FIELDS IN DSCB DM0P 02183018 * DM0P 02184018 POFILTYP EQU X'02' MASK FOR FILE TYPE DM0P 02185018 * DM0P 02186018 *******************************************************************DM0P 02187018 * DM0P 02188018 * MASKS USED TO TEST OPTION FIELDS IN JFCB DM0P 02189018 * DM0P 02190018 NORECRDY EQU X'20' NON-RECORD-READY BIT A44469 02190421 JFCBMEM EQU X'40' MASK FOR MEMBER NAME DMOP 02191018 * DMOP 02192018 ********************************************************************* 02200000 * 02220000 * MASKS FOR ACCESS METHODS IN SAM 02240000 * 02260000 PAM EQU X'02' 02280000 PSAM EQU X'42' 02300000 QSAMB EQU X'01' 02320000 * 02340000 * 02360000 * MASKS FOR MACRO'S TO BE USED 02380000 * 02400000 GETB EQU X'40' 02420000 PUTB EQU X'40' 02440000 READB EQU X'20' 02460000 WRITEB EQU X'20' 02480000 POINTB EQU X'04' 02500000 CNTRLB EQU X'02' 02520000 * 02540000 * 02560000 ********************************************************************* 02580000 * 02600000 * MASKS FOR DEVICES TO BE SUPPORTED 02620000 * 02640000 T3525 EQU X'4C' 3525 DEVICE SA53194 02650021 PRTPCH EQU X'30' PRT/PCH ASSOC. D.S SA53194 02652021 RDPCH EQU X'60' RD/PCH ASSOC. D.S SA53194 02654021 RDPRT EQU X'50' RD/PRT ASSOC. D.S SA53194 02656021 ASSOCDS EQU X'04' 3525 ASSOCIATED D.S. SA53194 02658021 DABIT EQU X'20' 02660000 URBIT EQU X'40' 02680000 TAPEB EQU X'80' 02700000 MICR3890 EQU X'56' DCBDEVT CODE FOR 3890 XL03123 02702003 * DEVC S20016 02710020 TIOTTERM EQU X'20' DEVICE IS TERMINAL S20016 02715020 * 02720000 * 02740000 * MASKS FOR BUFFER TECHNIQUE'S 02760000 * 02780000 EXCHANGB EQU X'10' 02800000 LRECIND EQU X'20' LOGICAL RECORD INTERFACE S19015 02810019 * 02820000 ********************************************************************* 02840000 * 02860000 * 02880000 * MODES OF OPERATION FOR QSAM 02900000 * 02920000 LOCATEB EQU X'08' 02940000 MOVEB EQU X'10' 02960000 * 02980000 * 03000000 ********************************************************************* 03020000 * 03040000 * MASKS USED FOR NEW BUFFER CONTROL BLOCK 03042019 * 03044019 FLGOFFST EQU 4 OFFSET TO FLAG BYTE IN S19015 03046019 * BCB S19015 03048019 RAFLAG EQU X'80' RECORD AREA PRESENT S19015 03050019 * 03052019 *********************************************************************** 03054019 * 03060000 OABD053 EQU 53 INTERNAL CODE 53 S21042 03066021 OABD094 EQU 94 INTERNAL CODE 94 S21042 03072021 OABD114 EQU 114 INTERNAL CODE 114 XL03123 03074003 OABD115 EQU 115 INTERNAL CODE 115 XL03123 03076003 OABD117 EQU 117 INTERNAL CODE 117 XL03123 03078003 * 03080000 * 03100000 * 03140000 BALR RBASE,0 03160000 USING PO,RBASE 03180000 USING IHADCB,RDCB 03200000 USING FORCORE,RCORE 03220000 USING DEB,RDEB 03240000 USING TCB,RD 03260000 USING CVT,RTIOT 03280000 USING UCBOB,RUCB 03300000 USING TIOT,RC S20016 03312020 * 03320000 * 03340000 * 03360000 * 03380000 PO EQU * 03400000 * 03420000 L RDCB,0(RPARC) GET DCBADDRESS 03440000 L RCORE,4(RWTGC) GET WORK AREA 03460000 AIF ('&LIB' NE 'LIB1').DEBCK10 TEST FOR LIB1(OS) YM0890 03470001 L RDEB,DCBDEBAD GET DEB ADDRESS 03480000 .DEBCK10 ANOP Y01021 03490000 AIF ('&LIB' EQ 'LIB1').DEBCK20 TEST FOR LIB1(OS) Y01021 03492000 L RDEB,DXPDEBAD LOAD PROTECTED DEB ADDR Y01021 03494000 .DEBCK20 ANOP Y01021 03496000 * 03500000 L RUCB,DEBUCBAD GET UCB ADDRESS 03520000 * 03520520 * FOR A TSO DCB, DCBEDVT IS SET TO X'4F' IN IGG0190L 03521020 * 03521520 L RTIOT,CVTPTR GET COMM VECTOR ADDR M1227 03522020 L RD,CVTTCBP GET TCB POINTER M1227 03522520 L RD,4(RD) GET ADDR OF CURRENT TCB M1227 03523020 L RC,TCBTIO GET ADDR OF TIOT M1227 03523520 AH RC,DCBTIOT GET ADDR OF THIS DD M1227 03524020 * ENTRY M1227 03524520 TM TIOELINK,TIOTTERM IS THIS A TSO DCB M1227 03525020 BO GOGOGO BRANCH IF YES M1227 03525520 LA RE,OABD094 LOAD INTERNAL CODE 94 S21042 03525721 CLI UCBTBYT3,X'40' COMMUNICATIONS DEVICE? A32172 03526020 BE CALLPD CALL PROB DET S21042 03533021 MVC DCBDEVT(1),UCBTBYT3 STORE DEVICE CLASS 03540000 NI DCBDEVT,X'F7' TURN OFF UR BIT IF ON 03560000 OC DCBDEVT(1),UCBTBYT4 STORE DEVICE NUMBER 03580000 ******************************************************************* 03618620 TM UCBTBYT3,X'08' UR EQ BEING USED 03620000 BZ GOGOGO BRANCH IF NOT S20016 03640020 * 03660000 OI DCBDEVT,X'40' FAKE UR BIT IN DCB 03680000 * 04500000 GOGOGO EQU * M0006 04500920 * 04501820 * THIS SECTION WILL SAVE DCBLRECL FIELD IN THE DEB FOR QSAM/BSAM * 04502720 * 04503620 TM DCBDSORG,PORG PARTITIONED DATA SET? SA61584 04504021 BO SOP100 YES,BRANCH BECAUSE SA61584 04506721 * DEBLRECL DOES NOT SA61584 04510021 * EXIST SA61584 04510221 SR RB,RB CLEAR REGISTER M0006 04510821 IC RB,DEBNMEXT PICK UP NO. OF EXTENTS M0006 04512421 SLL RB,P2 MULTIPLY BY 4 FOR NON-DA M0006 04514721 TM TIOELINK,TIOTTERM IS THIS A TSO DCB M3415 04517021 BO SOP90 BRANCH IF YES M3415 04519321 TM UCBTBYT3,DABIT DIRECT ACCESS DEVICE M0006 04521621 BNO SOP90 NO, BRANCH M0006 04523921 SLL RB,P2 MULTIPLY BY 4 FOR DA M0006 04526221 SOP90 AR RB,RDEB ADD DEB ADDRESS M0006 04528521 MVC DEBLRECL(P2,RB),DCBLRECL SAVE DCBLRECL IN DEB M0006 04530821 SOP100 EQU * SA61584 04532821 * 04533121 ******************************************************************* 04535421 MVC DXCCW6(1),DCBEROPT SAVE QSAM ERROR OPTIONS 04537721 XC DCBCNTRL(4),DCBCNTRL CLEAR PARA PASSAGE VECTOR 04540000 * 04560000 TM DCBDEVT,X'20' D. A. DEVICE BEING USED 04580000 BO A0020 YES, BRANCH 04590021 OI JFCBMASK+6,NORECRDY SET NON-RECORD-READY BIT M1802 04600021 * FOR ALL NON-DIRECT ACCESS 04610021 * DEVICES 04612021 B PAM6 BRANCH AROUND M1802 04614021 * 04620000 A0020 EQU * 04640000 XC DCBRELAD(4),DCBRELAD INITIALIZE RELAD 04660000 L RTIOT,CVTPTR(0,0) GET COMM VECTOR ADDRESS 04680000 L RB,CVTZDTAB DEVICE CONSTANT TABLE ADDRESS 04700000 IC RF,DCBDEVT GET DEVICE CHARACTERISTICS 04720000 N RF,DEVTCNST CLEAR HI 28 BYTES 04740000 IC RF,0(RF,RB) ADD ID TO TABLE ADDRESS 04760000 LA RB,0(RF,RB) ADD CONST AT THIS LOC-PNT DEV 04780000 IC RC,DCBDVTBL SAVE POSSABLE REC NO.R 04800000 ST RB,DCBDVTBL STORE ADDRESS OF DEVICE TABLE 04820000 STC RC,DCBDVTBL RESTORE RECORD NUMBER 04840000 SR RC,RC CLEAR REG 04860000 * 04880000 * 04900000 CLI DCBKEYLE,1 ARE KEYS SPECIFIED 04920000 BC 10,DEVCN1 YES BRANCH OVERHEAD INCLUDED 04940000 * 04960000 DEVCNO IC RC,8(RB) GET KEY OVERHEAD 04980000 * 05000000 DEVCN1 STC RC,DCBRELAD+4 STORE EITHER OVHEAD OR ZERO 05020000 * 05040000 MVC DCBTRBAL(2),4(RB) INITILIZE TRACK BALANCE 05060000 DEVCN2 EQU * 05080000 * 05100000 PAM1 EQU * 05120000 * 05140000 TM 0(RPARC),X'07' DCB OPENED FOR OUTPUT OR OUTIN 05160000 BC 1,PAM3 YES BRANCH 05180000 * 05220000 * FIND MEMBER NAME STORE IN DEB ISSUE A BLDL MACRO TO FIND EXTENT 05240000 * 05260000 TM JFCBIND1,X'01' DCB FOR PDS 05280000 BZ PAM5 NO BRANCH M1306 05290021 CLI JFCBELNM,X'40' IS THIS A MEMBER 05340000 BZ PAM5 NO BRANCH M1306 05360021 TM DSCFILTY,X'02' DSCB SET UP FOR P. O. 05380000 BC 8,DCBERROR NO ABEND -- DIAGNOSTIC TEST 05400000 XC 0(4,RWTG),0(RWTG) CLEAR 4 BYTES IN WTG TBL 05440000 MVI 1(RWTG),X'01' ONE NAME 05460000 MVI 3(RWTG),X'0C' OFFSET FOR TTRN 05480000 MVC 4(8,RWTG),JFCBELNM STORE MEMBER NAME 05500000 LR RE,RWTG READY FOR BLD L 05520000 * 05540000 BLDL 0(RDCB),(0) 05560000 * 05580000 LTR RJ,RJ HAS AN ERROR OCCURED IN BLDL 05600000 BZ PAM2 NO ERROR HAS OCCURRED S21042 05610021 * IF RETURN CODE FROM BLDL IS 05630021 * 4, THEN INTERNAL CODE IS 54 05632021 * IF RETURN CODE IS 8, 05634021 * THEN INTERNAL CODE IS 55 05636021 MVC 0(16,RWTG),WTGCNST RESTORE NAME AND ZEROES S21042 05637021 LA RE,OABD053 LOAD CODE 53 INTO REG S21042 05637621 SRL RJ,2 DIVIDE BLDL RETURN CODE S21042 05638221 * BY 4 I21042 05638821 AR RE,RJ CALCULATE INTERNAL CODE S21042 05639221 B CALLPD S21042 05639621 * 05640000 * 05660000 * 05680000 PAM2 EQU * 05700000 * 05720000 * 05740000 SR RF,RF 05760000 IC RF,14(RWTG) GET R FROM TTRN 05780000 BCTR RF,0 REDUCE BY ONE 05800000 STC RF,14(RWTG) RESTORE IN TTRN FIELD 05820000 L RE,12(RWTG) GET TTRN IN REG 0 05840000 MVC 0(16,RWTG),WTGCNST RESTORE NAME AND ZEROES 05860000 B PAM4 GO CONVERT IT 05880000 * 05900000 PAM3 EQU * 05920000 * 05940000 TM JFCBIND1,X'01' DCB FOR PDS 05960000 BZ PAM3D NO BRANCH DM0P 05961018 CLI JFCBELNM,JFCBMEM OPENING TO A MEMBER DM0P 05962018 BE PAM3D NO BRANCH DM0P 05963018 TM DSCFILTY,POFILTYP DSCB SET UP FOR P.O. DM0P 05964018 BZ DCBERROR NO ABEND DM0P 05965018 B PAM3C YES BRANCH DM0P 05966018 * DM0P 05967018 PAM3D EQU * DM0P 05968018 * DM0P 05969018 TM DCBDSORG,PORG DCB SET UP FOR P.O. DM0P 05970018 BZ PAM3A NO BRANCH DM0P 05971018 TM DSCFILTY,POFILTYP DSCB SET FOR P.O. DM0P 05972018 BZ DCBERROR NO ABEND DM0P 05973018 * 06100000 PAM3A EQU * 06120000 * 06140000 TM DEBOFLGS,X'C0' NEW DATA SET OPENING 06160000 BC 1,PAM3B YES BRANCH 06180000 TM DEBOFLGS,X'80' DATA SET BEING MODIFIED 06200000 BZ PAM3B IF NOT, BRANCH AROUND A47713 06220021 * NEXT A47713 06222021 OI DCBOFLGS,X'80' IF YES, TURN ON A47713 06224021 * LAST-IO-WAS- A47713 06226021 * WRITE BIT. TRKBAL FILLED IN 06228021 * FROM DSCB; NO SVC 25 NEEDED 06230021 B PAM3C BR TO MV IN FDAD & TRKBAL A47713 06232021 * 06240000 PAM3B EQU * 06260000 * 06280000 TM DCBDSORG,X'02' DCB SET UP FOR P. O. 06300000 BC 8,PAM5 NO BRANCH 06320000 * 06340000 * 06360000 * 06380000 PAM3C EQU * 06400000 * 06420000 MVC DCBTRBAL(2),DSCLSTAR+3 STORE TRACK BAL OF LAST WRT 06440000 MVC DCBRELAD+1(3),DSCLSTAR MOVE TTR TO WORK AREA 06460000 L RE,DCBRELAD GET TTR IN REG 0 06480000 SLL RE,8 SET TTR UP FOR CONVERT 06500000 LA RF,256 06520000 AR RF,RE SET UP FOR IMPLIED NOTE 06540000 ST RF,DCBRELAD IMPLIED NOTE R+1 06560000 * 06580000 PAM4 EQU * 06600000 * 06620000 LR RF,RDEB GET DEB ADDR IN PROPER REG. 06640000 STM 2,13,DXCCW7 SAVE REGS 06660000 LA RDCB,DCBFDAD GET DCB DISK FIELD 06680000 L RTIOT,CVTPTR(0,0) GET COMM VECTOR 06700000 L RJ,CVTPCNVT GET CONVERT RT ADDRESS 06720000 BALR RD,RJ TO CONVT RT. 06740000 * 06760000 LM 2,13,DXCCW7 RESTORE REGS 06780000 * 06800000 B PAM6 06820000 PAM5 EQU * 06840000 *********************************************************************** 06860000 *********************************************************************** 06880000 XC DCBFDAD(8),DCBFDAD CLEAR FDAD FIELD 06900000 MVC DCBFDAD+1(6),DEBBINUM INITILIZE FDAD FIELD 06920000 TM DCBCIND1,X'20' Q-DUMMY EXTENT 06940000 BZ PAM6 NO-BRANCH 06960000 * 06980000 MVI DCBFDAD+3,X'FF' FORCE ILLEGAL FDAD 07000000 PAM6 EQU * 07020000 * 07030021 * 07034021 TM DCBDEVT,X'40' UNIT RCD EQUIP USED 07040000 BC 8,AMOP15 NO BRANCH 07060000 * 07080000 TM DEBOPATB,X'0F' DCB FOR INPUT ONLY 07100000 BC 8,AMOP14 YES BRANCH 07120000 * 07140000 TM DCBMACRF+1,POINTB NOTE/POINT USED 07160000 BC 1,AMOP14A YES BRANCH 07180000 * 07200000 TM DEBOPATB,X'0F' DCB FOR INOUT OR OUTIN 07220000 BC 1,AMOP15 NO BRANCH 07240000 * 07260000 AMOP14 EQU * 07280000 TM DCBMACRF,POINTB NOTE POINT TO BE USED 07300000 BC 8,AMOP15 NO BRANCH 07320000 AMOP14A EQU * 07340000 MVI DCBCNTRL+1,10 STORE ID OF DUMMY RTNE 07360000 AMOP15 EQU * 07380000 AIF ('&LIB' EQ 'LIB1').LIB1CD XL03123 07382003 CLI DCBDEVT,MICR3890 DEVICE A 3890 ? XL03123 07390003 BNE AMOP16 NO-BRANCH XL03123 07392003 TM DCBRECFM,NOTF RECFM=F ? XL03123 07394003 BO RECFMERR NO-BRANCH XL03123 07396003 OI DCBRECFM,BLOCKED FORCE RECFM=FB XL03123 07398003 SR RB,RB CLEAR RB REGISTER XL03123 07398403 LA RB,LRECLMIN LOAD LRECL CONSTANT XL03123 07398803 CH RB,DCBLRECL TEST LRECL LENGTH XL03123 07399203 BH LRECLERR LRECL TOO LOW-BRANCH XL03123 07399603 LA RB,LRECLMAX LOAD LRECL CONSTANT XL03123 07401803 CH RB,DCBLRECL TEST LRECL LENGTH XL03123 07403803 BL LRECLERR LRECL TOO HIGH-BRANCH XL03123 07405803 LH RB,DCBLRECL LOAD LRECL TO RB REG XL03123 07407403 SLL RB,SHIFTCON MULTIPLY LRECL BY 16 XL03123 07409603 LH RC,DCBBUFL LOAD BUFL INTO RC XL03123 07411803 LTR RC,RC DCBBUFL SPECIFIED ? XL03123 07414003 BZ TSTBLKSI NO-BRANCH XL03123 07416203 CR RB,RC TEST DCBBUFL XL03123 07418403 BH BUFLERR BUFL TOO SMALL-BRANCH XL03123 07420603 TSTBLKSI EQU * XL03123 07422803 LH RC,DCBBLKSI LOAD BLKSIZE INTO RC XL03123 07425003 LTR RC,RC BLKSIZE SPECIFIED ? XL03123 07427203 BZ SUPBLKSI NO-BRANCH XL03123 07429403 CR RB,RC TEST BLKSIZE XL03123 07431603 BH BLKSIERR TOO SMALL-BRANCH XL03123 07433803 B POPEND XCTL OUT XL03123 07436003 SUPBLKSI EQU * XL03123 07438203 STH RB,DCBBLKSI STORE GENERATED BLKSIZE XL03123 07440403 B POPEND XCTL OUT XL03123 07442603 RECFMERR EQU * XL03123 07444803 LA RE,OABD115 LOAD ABEND CODE XL03123 07447003 B CALLPD CALL PROBLEM DETECT XL03123 07449203 LRECLERR EQU * XL03123 07451403 LA RE,OABD117 LOAD ABEND CODE XL03123 07453603 B CALLPD CALL PROBLEM DETECT XL03123 07455803 BUFLERR EQU * XL03123 07458003 BLKSIERR EQU * XL03123 07460203 LA RE,OABD114 LOAD ABEND CODE XL03123 07462403 B CALLPD CALL PROBLEM DETECT XL03123 07464603 AMOP16 EQU * XL03123 07466803 .LIB1CD ANOP XL03123 07469003 CLC DCBLRECL(2),PO+2 LOG RCD LNGTH SPECIFIED 07471203 BC 7,POPEND BRANCH ON YES 07473403 * 07475603 MVC DCBLRECL(2),DCBBLKSI ASSUME BLKSIZE WHEN LRECL ABS 07477803 TM DCBRECFM,DCBRECF VARIABLE FORMAT? SA65964 07479803 BO POPEND NO - BRANCH SA65964 07479903 TM DCBRECFM,DCBRECSB SPANNED FORMAT? SA65964 07486603 BO POPEND YES - BRANCH SA65964 07488603 LA RC,DCBBIT5 GET CONSTANT OF FOUR SA65964 07490603 LH RB,DCBLRECL OBTAIN DCB LRECL SA65964 07492603 SR RB,RC SUBTRACT FOUR FROM LRECL SA65964 07493003 STH RB,DCBLRECL STORE PROPER LRECL SA65964 07493103 POPEND EQU * 07493303 * 07500000 ****************************************************************** DM0B 09896016 * DM0B 09897016 XCTLGOGO EQU * DM0B 09898016 LA RF,SO6B ADDR OF NEXT LOAD ID S19033 09898519 * DM0B 09899016 MVC 0(5,RWTGC),0(RF) STORE NEXT MODULES ID 09900000 * 09920000 * 09940000 * 09960000 * 09980000 * 10000000 * 10020000 *********************************************************************** 10040000 * 10060000 *********************************************************************** 10080000 * 10100000 RELOOP EQU * 10120000 LA RWTGC,WGOFF(0,RWTGC) INCREMENT CURRENT WTG ENTRY 10140000 LA RPARC,PLOFF(0,RPARC) INCR CURRENT DCB ENTRY PTR 10160000 CLC 0(2,RWTGC),AMIDCNST THIS RT NEEDED AGAIN 10180000 BCR 8,RBASE RETURN TO INITIALIZE ANOTHER DCB 10200000 * 10220000 CLC 0(2,RWTGC),OPIDCNST END OF TABLE 10240000 BC 7,RELOOP NO, CHECK NEXT ENTRY 10260000 * 10280000 LR RPARC,RPAR 10300000 LA RWTGC,WAOFF(0,RWTG) REINITIALIZE WTG LIST PTR 10320000 ZCHEK CLI 0(RWTGC),X'00' IS THIS ENTRY COMPLETE 10340000 BC 7,TCTLRTN IF NOT TRANSFER CONTROL 10360000 * 10380000 LA RWTGC,WGOFF(0,RWTGC) GET NEXT ENTRY 10400000 LA RPARC,PLOFF(0,RPARC) 10420000 BC 15,ZCHEK 10440000 * 10460000 TCTLRTN EQU * 10480000 MVC 6(2,RWTG),0(RWTGC) STORE ID IN WTG TABLE 10500000 MVC 14(3,RWTG),2(RWTGC) MOVE TTR INTO TABLE 10520000 * 10540000 LA RJ,DXXCTL SET UP FOR XCTL S21042 10560021 ** 10580000 XCTL DE=(RWTG),SF=(E,(15)) 10600000 ** 10620000 * 10640000 * 10660000 ********************************************************************** 10680000 * 10700000 * 10720000 * 10740000 DCBERROR EQU * 10760000 LA RE,OABD053 S21042 10770021 * 0 I21042 10790021 CALLPD EQU * S21042 10797021 DMABCOND (0),PDLOAD,RETURN=NONE,RES=NO,REGSAVE=YES S21042X10804021 013 ABEND 10811021 B TCTLRTN GO XCTL S21042 10831021 * 10860000 * 10880000 ********************************************************************** 10900000 * 10920000 WAOFF EQU 32 OFFSET OF FIRST ENTRY IN WTG TABLE 10940000 PLOFF EQU 4 OFFSET OF DCB ENTRIES 10960000 WGOFF EQU 8 OFFSET OF WTG ENTRIES 10980000 OPIDCNST DC C'0S' 11000000 AMIDCNST DC C'1B' 11020000 WTGCNST DC C'IGG019 ' 11040000 DC X'00000000' 11060000 * 11080000 ****************************************************R**************** 11100000 * 11120000 * 11140000 * 11160000 DEVTCNST DC F'15' 11180000 * 11200000 * 11220000 ****************************************************R**************** 11240000 * 11260000 * 11280000 XCTLTABL ID=(SO6B,6B,PDLOAD,6M),SVC=019 S21042 11380021 DCBD DSORG=PS 11640000 * 11660000 * 11680000 IECDSECS MAIN,EXPAND=YES S21042 11710021 * COMMUNICATION VECTOR TABLE (SSS) 11740000 * TASK CONTROL BLOCK 11760000 TIOT DSECT 12200000 TIOELNGH DS CL1 LENGTH OF THIS ENTRY 12220000 TIOESTTA DS CL1 STATUS -A- 12240000 TIOERLOC DS CL2 REL. LOC OF POOL 12260000 TIOEDDNM DS 2F DDNAME 12280000 TIOEJFCB DS 1F JFCB DISK ADDR 12300000 TIOESTTB DS 0CL1 12320000 TIOEFSRT DS CL4 12340000 DS CL1 12360000 * TIOT POOL ENTRY 12380000 TIOPNSLT DS XL1 NR.OF SLOTS FOR POOL 12400000 DS CL1 12420000 TIOPNSRT DS XL1 NR.OF DEVICES (FILLED 12440000 * SLOTS) 12460000 TIOPPOOL DS CL8 POOL NAME 12480000 TIOPSTTB DS XL1 STATUS OF SLOT 12500000 TIOPSLOT DS XL3 SRT ADDRESS OR EMPTY SLOT 12520000 TIOTFEND DS 1F FINAL END OF AN ENTRY 12540000 TIOELINK EQU TIOERLOC+1 M0005 12550020 SPACE 1 12560000 SRT DSECT 12580000 IEFUCBOB 12600000 * DATA EXTENT BLOCK (UNTIL PROTIOS CHANGES) 12620000 DEB DSECT 12640000 DEBNMSUB DS 0CL1 12660000 DEBTCBAD DS CL4 12680000 DEBAMLNG DS 0CL1 12700000 DEBDEBAD DS CL4 12720000 DEBOFLGS DS 0CL1 12740000 DEBIRBAD DS CL4 12760000 DEBOPATB DS 0CL1 12780000 DEBSYSPG DS CL4 12800000 DEBNMEXT DS 0CL1 12820000 DEBUSRPG DS CL4 12840000 DEBPRIOR DS 0CL1 12860000 DEBECBAD DS CL4 12880000 DEBPROTG DS 0CL1 12900000 DEBDEBID DS 0CL1 12920000 DEBDCBAD DS CL4 12940000 DEBEXSCL DS 0CL1 12960000 DEBAPPAD DS CL4 12980000 DEBDVMOD DS 0CL1 13000000 DEBUCBAD DS CL4 13020000 DEBTVLSQ DS 0CL2 VOL SEQ FOR TAPE 13040000 DEBBINUM DS CL2 13060000 DEBTVLNM DS 0CL2 NO OF VOL FOR TAPE 13080000 DEBSTRCC DS CL2 13100000 DEBSTRHH DS CL2 13120000 DEBENDCC DS CL2 13140000 DEBENDHH DS CL2 13160000 DEBNMTRK DS CL2 13180000 * FOR ADDITIONAL EXTENT ON DIRECT ACCESS THE FOLLOWING FIELDS 13200000 * WILL HAVE TO BE OFFSET ANOTHER 16 BYTES 13220000 DEBVOLSQ DS H 13240000 DEBVOLNM DS H 13260000 * FOR EACH SUBROUTINE LOADED BUMP THIS OFFSET BY 2 13280000 DEBSUBID DS H 13300000 CVT DSECT 13320000 CVT 13340000 IKJTCB , S20016 13352020 END 13360000 ./ ADD SSI=05011939,NAME=IGG0191C,SOURCE=0 TITLE 'IGG0191C - SAM OPEN EXECUTOR (DUMMY DATA SET)' 00020021 COPY LCGASMSW Y01021 00020400 AIF ('&LIB' EQ 'LIB1').OSLIB CHECK SYSTEM 00022402 * VS1 RELEASE 01 DELETIONS 00022802 * (REFER TO SA56393) XA00009 00023202 * VS2 RELEASE 2 DELETIONS/CHANGES 00023601 * YM5574 00023701 * 00023801 .OSLIB ANOP 00023902 * RELEASE 19 DELETIONS 00024000 *1773030600 A28185 00024519 * RELEASE 20 DELETIONS 00025000 *3525024600,025400,026200,059600,060200,060600 S20016 00025520 * RELEASE 21 DELETIONS 00026000 *2673010000,022800-023000,023800,041200-041600,057000,059600- S21042 00026321 *2673060600,061800-062600 S21042 00026621 *2673 A48163 00029621 *2673 A45054 00033021 * 030000,030500-030520,030660-030800,031600,032000-032400, A46862 00036021 * 035000-035200,036400-036600,037640-037680 A46862 00039021 * A51108 00041021 * SA56393 00051002 * SA53809 00053002 * SA57249 00053402 * VS1 RELEASE 3.0 DELETIONS 00053800 * NOTE: APAR XA03118 IS FLAGGED AS SA66569 XA03118 00057321 * C039999,040019 XA02329 00061521 * 00065021 * OS RELEASE 21.8 CHANGES 00068521 * NOTE: APAR SA65454 IS FLAGGED AS XA02329 SA65454 00072021 * C006800,007000 SA66569 00075521 * A007100,007120,007140,040003,040007,040023,040027 SA66569 00079021 *0000000200,007400,021600-022380,023600,025000,025600,026010- SA68439 00079521 *0000026060,026120-026400,028800,061000,061400-062200 SA68439 00080021 *0000007480,026170,026290,029640 SM00213 00080521 * SA70396 00082021 * 00082521 *STATUS CHANGE LEVEL 008 00086021 *********************************************************************** 00089521 * * 00093021 *FUNCTION-OPERATION --OPENS A DCB FOR 'DUMMY'(I.E.,EFFECTIVE NOP FOR * 00096521 * OPERATIONS ON DATA SET) * 00100000 * * 00120000 * VECTORS IN DCB ARE SET SUCH THAT THE FOLLOWING 15741 00126000 * OPERATIONS WILL IN EFFECT BE 15741 00132000 * * 00180000 * 1.BSAM * 00200000 * WRITE POST ECB AND RETURN 15741 00206000 * NOTE NOP (NO OPERATION) 15741 00212000 * POINT NOP * 00260000 * READ POST ECB AND RETURN 15741 00270000 * CNTRL NOP * 00300000 * CHECK WRITE - NOP * 00320000 * CHECK READ - GO TO EODAD * 00340000 * * 00360000 * 2 QSAM * 00380000 * GET(MOVE MODE) GO TO EODAD * 00400000 * GET(LOCATE MODE) GO TO EODAD * 00420000 * PUT(MOVE MODE) NOP * 00440000 * PUT(LOCATE MODE) ADDRESS OF BUFFER RETURNED IN * 00460000 * REGISTER 1 * 00480000 * PUTX NOP * 00500000 * CNTRL NOP * 00520000 * RELSE NOP * 00540000 * TRUNC NOP * 00560000 * * 00580000 * 3.DCBIOBA POINT TO DUMMY IOB WITHIN THIS ROUTINE * 00600000 * ITS ECB IS POSTED COMP.NO ERROR FOR * 00620000 * PRTOV WITH USER EXIT. * 00640000 * * 00660000 * 4.BUFFER POOL BOTH QSAM AND BSAM WILL PROVIDE SA66569* 00680021 * THE NUMBER OF BUFFERS SPECIFIED BY THE USER SA66569* 00700021 * IN DCBBUFNO. IF BUFNO IS NOT SPECIFIED, TWO SA66569* 00710021 * BUFFERS WILL BE PROVIDED AS A DEFAULT FOR SA66569* 00712021 * QSAM ONLY. SA66569* 00714021 * * 00720000 * 5.DEB BUILD A 56 BYTE DUMMY DEB * 00740021 * NONE - APPENDAGE VECTOR TABLE (NONSTANDARD) * 00742021 * 16 BYTE - PREFIX * 00744021 * 32 BYTE - BASIC SECTION * 00746021 * 0 BYTE - UCB ADDRESS * 00748021 * 0 BYTE - ACCESS METHOD SECTION * 00750021 * 2 BYTE - SUBROUTINE NAME SECTION * 00752021 * * 00760000 *ENTRY POINT IGG0191C ENTERED BY XCTL * 00780000 * * 00800000 *INPUT SEE DESCRIPTION OF REGISTERS,DCB(USERS) * 00820000 * * 00840000 *OUTPUT SEE DESCRIPTION OF REGISTERS,DCB(USERS) * 00860000 * * 00880000 *EXTERNAL ROUTINES 1.SUPERVISOR (GETMAIN) * 00900000 * 2. SUPERVISOR (LOAD) * 00920000 * * 00940000 *EXITS NORMAL - SCTL TO IGG019 (OPEN LOAD 7) * 00960000 * * 00980000 *EXITS ERROR: XCTL TO PROB DET (IGG0196M) FOR WTP AND 013 ABEND 01000021 * * 01020000 *TABLES/WORKAREAS- WHERE TO GO TABLE (WTG) 01040000 * 01060000 * BYTE 0-7 NAME 01080000 * BYTE 8-10 RELATIVE DISK ADDRESS(TTR) OF FIRST RECORD 01100000 * BYTE 11 CONCATENATION NUMBER 01120000 * BYTE 12 ZERO 01140000 * BYTE 13 ALIAS INDICATOR AND USER DATA FIELD DESCRIPTOR. 01160000 * ALIAS INDICATOR 1 BIT 01180000 * NUMBER OF TTRS IN USERS DATA FIELD 2 BITS 01200000 * BYTE 14-16 TTR OF FIRST TEXT RECORD 01220000 * BYTE 17 ZERO 01240000 * BYTE 18-19 TTR OF NOTE LIST OR SCATTER LIST 01260000 * BYTE 20 TRANSLATION TABLE 01280000 * BYTE 21 ZERO OR NUMBER OF ENTRIES IN THE NOTE LIST 01300000 * BYTE 22-23 ATTRIBUTES 01320000 * BYTE 24-26 TOTAL CONTIGUOUS MAIN STORAGE REQUIRED FOR MODULE 01340000 * BYTE 27-28 LENGTH OF FIRST TEXT RECORD 01360000 * BYTE 29 LENGTH OF WTG TABLE (IN DOUBLE WORDS) 01380000 * BYTE 30-31 PATH THROUGH LOADS OF ROUTINES 01400000 * BYTE 32-36 IDTTR OF EXECUTOR FOR FIRST DCB 01420000 * BYTE 37-39 WORKAREA ADDRESS FOR FIRST DCB 01440000 * BYTE 40- TABLE OF IDTTR'S 01460000 * BYTE 32+N(8) IDTTR OF EXECUTOR FOR N TH DCB (5 BYTES) 01480000 * WORKAREA ADDRESS FOR N TH DCB (3 BYTES) 01500000 * IDTTR OF LAST ROUTINE LOAD (5 BYTES) 01520000 * NOT USED (3 BYTES) 01540000 * * 01560000 *NOTES-NONE * 01580000 * * 01600000 *********************************************************************** 01605021 EJECT 01610021 IGG0191C CSECT 01615021 * 01616021 * EQUATES 01620000 * 01640000 NORLD EQU X'10' NO RELOCATION NECCESSARY INDICATOR A51108 01650021 * FOR LOAD 01652021 VEC1 EQU 26 01660000 DCBSVC EQU 84 01680000 READB EQU X'20' 01700000 WRITEB EQU X'20' 01720000 LOCATEB EQU X'08' 01740000 PUTLOC EQU X'48' MACRF MASK, PUT LOCATE YM5574 01750001 OUTPUT EQU X'0F' 01760000 PRINTER EQU X'48' PRINTER DEVT MASK 01780000 LRECIND EQU X'20' LOGICAL RECORD INTERFACE A45054 01782021 QSAMB EQU X'01' DCBCIND2, BIT ON IF QSAM A45054 01784021 FORMATVS EQU X'48' VARIABLE SPANNED RECORDS A45054 01786021 FLGOFFST EQU 4 OFFSET TO FLAG BYTE IN A48163 01786400 * BUFFER CONTROL BLOCK 01786800 DWDLEN EQU 8 DOUBLEWORD LENGTH A48163 01788021 EXTND EQU X'40' FLAG TO INDICATE BUFCB A48163 01788421 * IS 16 BYTES IN LENGTH A48163 01788821 OABD052 EQU 52 S21042 01790021 OABD056 EQU 56 SA53809 01792002 BLKFMT EQU X'10' DCB BLK FORMAT INDICATOR SA53809 01794002 VARIABLE EQU X'40' VARIABLE REC INDICATOR SA53809 01796002 FORMATF EQU X'80' FIXED REC INDICATOR SA53809 01798002 HIAR1 EQU X'80' HIARCHY=1 INDICATOR SA70396 01798421 FOUR EQU 4 ADDITION FACTOR SA53809 01798802 * 01800000 DEBSIZE EQU 56 SIZE OF DEB FOR DD DUMMY S20016 01810020 RE EQU 0 WORK REGISTER/PARAM REG 01820000 RF EQU 1 WORK REGISTER/PARAM REG 01840000 RDCB EQU 2 ADDR. OF CURRENT DCB 01860000 RBASE EQU 3 BASE REG. 01880000 RCORE EQU 4 ADDR. OF OPEN WORK AREA 01900000 RPAR EQU 5 OPEN PARAMETER LIST 01920000 RWTG EQU 6 D.E. TABLE FOR XCTL & LOAD 01940000 RPARC EQU 7 CURRENT ENTRY IN PARAM. LIST 01960000 RWTGC EQU 8 CURRENT ENTRY IN WTG TABLE 01980000 RTIOT EQU 9 WORK REG. 02000000 RUCB EQU 10 WORK REG. 02020000 RDEB EQU 11 WORK REG. 02040000 RA EQU 11 WORK REG. 02060000 RB EQU 12 WORK REG 02080000 RC EQU 13 WORK REG 02100000 RD EQU 14 WORK REG 02120000 RJ EQU 15 WORK REG/PARAM REG 02140000 EJECT 02230021 BALR RBASE,RE SET UP 02260000 * 02320000 USING FORCORE,RCORE 02340000 USING *,RBASE S21042 02380021 USING IHADCB,RDCB 02400000 ** 02420000 L RCORE,4(RWTGC) GET WORKAREA 02440000 LA RJ,DEBSIZE GET SIZE OF DEB S20016 02460020 L RDCB,0(RPARC) SET UP DCB ADDRESSABILITY 02480000 * 02490021 * GETMAIN DEB AND FILL IN DEB FIELDS. 02500021 * 02510021 GETMAIN R,LV=(15),SP=254 GET MAIN FOR DUMMY DEB 02520000 XC 0(DEBSIZE,RF),0(RF) CLEAR CORE S20016 02540020 USING DEBPREFX,RF DEFINE BASE DEB PREFIX SA68439 02545021 MVI DEBLNGTH,(DEBSIZE+7)/8 DEB LENGTH IN DOUBLE WD SA68439 02550021 LA RD,DEBBASIC ADDR OF DEB BASIC SECTN SA68439 02560021 DROP RF DROP BASE TO DEB PREFIX SA68439 02565021 USING DEBBASIC,RD DEFINE BASE TO DEB BASE SA68439 02570021 ST RD,24(RWTG) TEMP STORE OF DEB ADDR. 02580000 MVC DCBDEBAD+1(3),25(RWTG) MOVE DEBAD TO DCB 02600000 L RA,CVTPTR LOAD CVT ADDRESS SA68439 02603021 L RA,CVTTCBP-CVT(,RA) LOAD TCB PTR ADDRESS SA68439 02606021 L RA,4(0,RA) LOAD TCB ADDRESS 7M720 02609000 USING TCB,RA DEFINE BASE TO TCB SA68439 02610021 ST RA,DEBTCBAD STORE TCB ADDR IN DEB SA68439 02612021 MVC DEBOPATB,0(RPARC) COPY OPEN ATTRIBUTES SA68439 02615021 NI DEBOPATB,X'FF'-DEBABEND TURN OFF END LIST BIT SA68439 02616021 * NO. OF EXTENTS IS 0 SM00213 02617021 ST RDCB,DEBDCBAD STORE DCB ADDR IN DEB SA68439 02620021 MVC DEBPROTG,TCBPKF CPY STORAGE PROTECT KEY SA68439 02623021 OI DEBDEBID,X'0F' OR IN DEB IDENTIFIER SA68439 02626021 * EXT SHIFT SCALE 0 BYTES SM00213 02629021 MVC DEBDEBB,TCBDEB+1 CHAIN DEBS OFF THIS DEB SA68439 02630021 ST RD,TCBDEB CHAIN THIS DEB OFF TCB SA68439 02640021 DROP RA DROP BASE TO TCB SA68439 02650021 * 02660000 * LOAD IGG019AV, DUMMY DATA SET ACCESS MEHTOD ROUTINE. 02670021 * 02675021 MVC 6(2,RWTG),SPLD STORE ID OF DUMMY IN DE 02680000 MVI 22(RWTG),X'CA' PUT ATTRIBUTES IN LIST SA56393 02700002 NI 23(RWTG),X'FF'-NORLD RELOCATE IS REQUIRED A51108 02710021 MVC 14(3,RWTG),SPLD+2 STORE TTR OF DUMMY IN DE 02720000 AIF ('&LIB' EQ 'LIB1').DEBCK10 TEST FOR LIB1(OS) Y01021 02730000 DEBCHK (RDCB),TYPE=ADD,AM=SAM ADD DEB TO DEB TABLE Y01021 02732000 ST RF,DXPDEBAD STORE DEBAD IN WORK AREA Y01021 02734000 .DEBCK10 ANOP Y01021 02736000 SR RF,RF CLEAR RF 02740000 IC RF,SPLD+5 INSERT DOUBLE WD.LENGTH 02760000 SLL RF,3 CHANGE TO BYTES 02780000 ST RF,24(RWTG) TEMP. STORE OF LENGTH 02800000 MVC 25(2,RWTG),26(RWTG) TOTAL CONTIG MS REQD IN BYTES 02820000 MVC 27(2,RWTG),25(RWTG) LGN OF FIRST TEXT REC IN BYTES 02840000 L RF,CVTPTR(0,0) LOAD ADDR. OF CVT 02860000 L RF,CVTSVDCB-CVT(,RF) LOAD ADDR OF SVCLIB DCB SA68439 02880021 ** 02900000 LOAD DE=(RWTG),DCB=(1) 02920000 ** 02940000 ** 02960000 OI 23(RWTG),NORLD RESET RELOCATE BIT A51108 02962021 MVC DEBSUBID-DEBSUBNM+DEBBASND,SPLD SUBID AV SM00213 02964021 MVI DEBNMSUB,1 SET NO. OF SUBR ID TO 1 SA68439 02966021 DROP RD DROP BASE TO DEB SA68439 02968021 USING ADUMMY,RTIOT SET THE BASE A46862 02970021 LR RTIOT,RE SAVE ADDR.OF IGG019AV 02980000 L RD,ADUMPUT LOAD DUMMY PUT ADDR A46862 02990021 ST RD,24(RWTG) TEMP.STORE OF DUMMY ADDR. A46862 03000021 MVC DCBCNTRL+1(3),25(RWTG) LOAD ADDR.OF CNTRC/NOTE/POINT 03020000 MVC DCBREAD+1(3),25(RWTG) LOAD ADDR.OF RD/WR/GET/PUT 03040000 TM DCBMACRF,X'02' USING READ/CNTRL A28185 03042019 BO SD04120 YES,BRANCH A28185 03044019 TM DCBMACRF+1,X'02' USING WRITE/CNTRL A28185 03046019 BZ SD04121 NO,BRANCH A28185 03048019 SD04120 L RD,ADUMCNTR ADDR OF DUMMY CNTRL A46862 03050021 ST RD,24(RWTG) TEMP STORE OF CNTRL ADDR A28185 03054019 MVC DCBCNTRL+1(3),25(RWTG) LOAD ADDR OF CNTRL RTN A28185 03056019 SD04121 L RD,ADUMCHEK ADDR OF CHECK RTN A46862 03066021 ST RD,24(RWTG) TEMP STORE OF CHECK ADDR. 03100000 MVC DCBCHECK+1(3),25(RWTG) LOAD ADDR.OF CHECK/GERR/PERR) 03120000 * 03140000 L RUCB,ADUMIOB LOAD ADDR OF DUMMY IOB A46862 03160021 ST RUCB,DCBIOBA STORE IOB ADDR.INDCB 03180000 * 03260000 SD04130 TM DCBMACRF,READB IS THIS BSAM 03280000 BC 1,SD04132 YES BRANCH 03300000 TM DCBMACRF+1,WRITEB NO 03320000 BC 1,SD04132 YES BRANCH 03340000 * SET INDICATOR FOR QSAM YM5574 03360001 OI DCBCIND2,QSAMB YM5574 03362001 SR RB,RB CLEAR REGISTER M1552 03365000 IC RB,DCBBUFNO GET NUMBER OF BUFFERS M1552 03370000 LTR RB,RB IS BUFNO EQUAL TO ZERO M1552 03375000 BNE NODEFALT NO, BRANCH AROUND M1552 03380000 LA RB,2 DEFAULT IS 2 BUFFERS M1552 03385000 NODEFALT EQU * M1552 03390000 TM 0(RPARC),OUTPUT QSAM OUTPUT 03400000 BC 14,SD04131 NO, BRANCH INPUT OR UPDATE 03420000 * 03440000 TM DCBMACRF+1,LOCATEB PUT LOCATE 03460000 BZ SD04200 NO BRANCH TO GET BUF POOL 03480000 L RD,ADUMPUTL LOAD DUMMY PUT LOCATE ADD A46862 03490021 ST RD,24(RWTG) TEMP.STORE OF PUT ADDR. 03540000 MVC DCBPUT+1(3),25(RWTG) LOAD ADDR OF PUT 03560000 B SD04200 BRANCH TO GETT POOL 03580000 * 03600000 SD04131 EQU * 03620000 L RD,ADUMGET ADDR OF DUMMY GET RTN A46862 03630021 ST RD,24(RWTG) TEMP.STORE OF GET ADDR. 03680000 MVC DCBGET+1(3),25(RWTG) LOAD ADDR OF GET 03700000 B SD04200 BRANCH TO GET POOL 03720000 * 03740000 SD04132 EQU * 03760000 L RD,ADUMBSAM LOAD ADDR OF DUM. BSAM A46862 03770021 ST RD,24(RWTG) TEMP.STORE OF ADDRESS 15741 03772000 MVC DCBREAD+1(3),25(RWTG) MOVE ADDRESS TO DCB 15741 03776000 SR RB,RB CLEAR RB 03780000 IC RB,DCBBUFNO GET NO.BUFFERS REQUESTED 03800000 LTR RB,RB ANY BUFFERS REQUIRED 03820000 BZ SD04END1 NO BRANCH TO END 03840000 * 03860000 SD04200 EQU * 03880000 TM DCBBUFCB+3,1 IS THERE A BUF.CNTRL.BLOCK 03900000 BZ SD04END1 YES BRANCH TO END 03920000 * 03940000 * 03960000 TM DCBCIND2,QSAMB IS THIS QSAM? SA53809 03970002 BNO SD04210 NO - BY PASS BLOCK CHK SA53809 03972002 TM DCBMACRF+1,PUTLOC PUT, IN LOCATE MODE YM5574 03972401 BNO SD04210 NO - BYPASS BLOCK CHK YM5574 03972801 TM DCBRECFM,BLKFMT BLOCK FORMAT? SA53809 03974002 BNO SD04210 NO - BY PASS BLOCK CHK SA53809 03976002 TM DCBRECFM,VARIABLE "V" RECORDS SA53809 03978002 BNO FIXED NO - CHECK FOR FIXED SA53809 03978402 TM DCBRECFM,FORMATVS IS THIS SPAN RECS? SA53809 03978802 BO SD04210 YES - BY PASS BLOCK CHK SA53809 03979202 LH RC,DCBLRECL OBTAIN LRECL SA53809 03979602 LA RD,FOUR ADD LENGHT OF BDW SA53809 03979702 AR RC,RD SA53809 03979802 CH RC,DCBBLKSI IS LRECL GT BLKSIZE? SA53809 03979902 BNH SD04210 NO - CONTINUE SA53809 03986602 LA RE,OABD056 YES - ISSUE ABEND SA53809 03988602 B ERROR SA53809 03990602 FIXED EQU * CHECK FIXED BLOCK FMT SA53809 03992602 TM DCBRECFM,FORMATF FIXED REC ? SA53809 03993002 BZ SD04210 NO - CONTIUE SA53809 03993102 SR RD,RD CLEAR REGISTER SA53809 03993202 LH RJ,DCBBLKSI OBTAIN BLKSIZE XA02329 03999900 LTR RJ,RJ CHECK FOR BLKSIZE=ZERO SA66569 04000321 BZ SD04210 BRANCH IF ZERO SA66569 04000721 LH RA,DCBLRECL OBTAIN LRECL XA02329 04001900 LTR RA,RA CHECK FOR LRECL=ZERO SA66569 04002321 BZ SD04210 BRANCH IF ZERO SA66569 04002721 DR RD,RA DIVIDE BLKSIZE BY LRECL SA53809 04003902 LTR RD,RD IS THERE A REMAINDER ? SA53809 04005902 BZ SD04210 NO - CONTINUE SA53809 04006302 LA RE,OABD056 YES - ISSUE ABEND SA53809 04006402 B ERROR SA53809 04006502 SD04210 LH RC,DCBBUFL GET BUFFER LENGTH 04006602 LTR RC,RC HAS IT BEEN SPECIFIED 04013302 BC 7,SD04220 BRANCH ON YES 04020000 LH RC,DCBBLKSI GET LENGTH FROM BLOCK SIZE 04040000 LTR RC,RC IS BLOCK SIZE SPECIFIED 04060000 BP SD04220 YES BRANCH TO GET POOL 04080000 * NO ABEND 04100000 LA RE,OABD052 LOAD INTERNAL CODE SA53809 04110002 ERROR EQU * SA53809 04112002 DMABCOND (0),PDLOAD,RETURN=NONE,RES=NO,REGSAVE=YES S21042X04120002 CALL PROBLEM DETERMINATION 04140021 B TCTLRTN GO TO PROB DETERMINATION S21042 04160021 ** 04180000 SD04220 LA RC,7(0,RC) ADJUST 04200000 SRL RC,3 TO 04220000 SLL RC,3 DOUBLE ALIGNMENT 04240000 * 04260000 LR RD,RB SAVE LENGTH AND NUMBER 04280000 LR RJ,RC 04300000 MR RD,RD COMPUTE TOTAL LENGTH 04320000 * 04340000 TM DCBCIND2,QSAMB IT IT QSAM A45054 04350021 BNO ALIGN A45054 04352021 TM DCBBFTEK,LRECIND LRI REQUESTED A45054 04354021 BNO ALIGN A45054 04356021 TM DCBRECFM,FORMATVS VARIABLE SPANNED A45054 04358021 BNO ALIGN A45054 04358421 * ALLOW 8 EXTRA BYTES FOR EXTENDED CONTROL BLOCK 04358821 B SD04230 A45054 04359221 ALIGN EQU * A45054 04359621 * 04360000 TM DCBBFTEK,1 FULL WORD ALLIGNMENT REQUIRED 04380000 BC 1,SD04230 BRANCH ON YES 04400000 LA RJ,8(0,RJ) ADD 8 ON NO 04420000 B SD04240 04440000 * 04460000 SD04230 LA RJ,16(0,RJ) ADD 16 ON YES 04480000 ** 04500000 SD04240 EQU * HIERARCHY CHECK SA57249 04510002 TM DCBHIARC,HIAR1 HIARCHY SPECIFIED? SA57249 04512002 BNO SD04244 NO - DEFAULT TO AERO SA57249 04514002 GETMAIN R,LV=(15),SP=250,HIARCHY=1 SA57249 04516002 B SD04246 SA57249 04518002 SD04244 EQU * GETMAIN WITH HIARCHY=0 SA57249 04518402 GETMAIN R,LV=(15),SP=250 SA57249 04520002 ** 04540000 * 04560000 SD04246 EQU * SA57249 04570002 ST RF,0(0,RF) TEMP. STORE START OF BUF.POOL 04580000 MVC DCBBUFCB+1(3),1(RF) LOAD BUFCB ADDR.IN DCB 04600000 STH RB,4(0,RF) STORE LNTH IN BUF CONTROL BCK 04620000 STH RC,6(0,RF) STORE BUFNO IN BUFCB 04640000 * 04660000 LR RUCB,RF GET ADDR.IN WOKR REG. 04680000 LA RUCB,8(0,RUCB) POINT TO SECOND DOUBLE WORD 04700000 TM DCBBFTEK,1 DOUBLE WORD ALLIGN. 04720000 BC 8,TSTLRI YES BRANCH A48163 04740021 LA RUCB,4(0,RUCB) POINT TO FULL NOT DOUBLE 04760000 B EXTEND GO SET EXTEND FLAG A48163 04770021 TSTLRI TM DCBBFTEK,LRECIND LRI SUPPORTED A48163 04774021 BNO SD04250 NO, BRANCH TO SAVE FIRST A48163 04776021 * BUFFER ADDRESS A48163 04778021 LA RUCB,DWDLEN(0,RUCB) YES, OFFSET TO NEXT DW A48163 04778421 EXTEND OI FLGOFFST(RF),EXTND SET FLAG TO INDICATE A48163 04778821 * BUFFER CONTROL BLOCK EXTENDED 04779221 * 04779621 * THE NEXT SEQUENCE OF INSTRUCTIONS BUILDS A BUFFER POOL 04779721 SD04250 EQU * 04780000 ST RUCB,0(RF) STORE BUFFER ADDR. 04800000 LR RF,RUCB SAVE NEXT BUFFER ADDR. 04820000 SD04260 EQU * 04840000 BCT RB,SD04280 IF MORE BRANCH 04860000 SD04270 EQU * 04880000 ST RB,0(RF) LAST LINK TO ZERO 04900000 B SD04END1 BRANCH TO END 04920000 SD04280 EQU * 04940000 ALR RUCB,RC BUFF LEN + BUFF ADDR. 04960000 ST RUCB,0(RF) STORE NEXT BUFF IN LINK 04980000 ALR RF,RC UPDATE TO NEXT LINK 05000000 B SD04260 05020000 *** 05040000 SD04END1 XC 0(5,RWTGC),0(RWTGC) ZERO CURRENT ENTRY IN WTG 05060000 LR RA,RBASE SET RA FOR POSSIBLE REPEAT 05080000 ** 05100000 * 05120000 * THIS IS AN OPEN PROVIDED SECTION OF CODE THAT SETS UP XCTL 05140000 * 05160000 ********************************************************************* 05180000 * 05200000 * 05220000 RELOOP LA RWTGC,WGOFF(0,RWTGC) INCREMENT TO NXT ENTRY IN WRG 05240000 LA RPARC,PLOFF(0,RPARC) INCREMENT TO NXT DCB IN PARAM 05260000 CLC 0(2,RWTGC),AMIDCNST IS NXT ALSO DUMMY 05280000 BCR 8,RA YES RETURN TO START 05300000 * 05320000 CLC 0(2,RWTGC),OPIDCNST IS NXT END OF WTG 05340000 BC 7,RELOOP NO RETURN TO TEST NXT ENTRY 05360000 * 05380000 LR RPARC,RPAR INITIALIZE PARAM REGISTER 05400000 LA RWTGC,WAOFF(0,RWTG) INIT. WTGC REG TO START OF WTG 05420000 ZCHEK CLI 0(RWTGC),X'00' IS THIS ENTRY COMPLETE 05440000 BC 7,TCTLRTN IF NOT TRANSFER CONTROL 05460000 * 05480000 LA RWTGC,WGOFF(0,RWTGC) INCREMENT TO NXT ENTRY IN WTG 05500000 LA RPARC,PLOFF(0,RPARC) INC. TO NXT DCB IN PARAM LIST 05520000 BC 15,ZCHEK 05540000 * 05560000 TCTLRTN EQU * 05580000 * 05600000 MVC 6(2,RWTG),0(RWTGC) STORE ID IN DE FROM WTG 05620000 MVC 14(3,RWTG),2(RWTGC) MOVE TTR IN DE FROM WTG 05640000 MVC 22(7,RWTG),RESTCON RESET WTG AFTER LOAD 05660000 * 05680000 LA 15,DXXCTL XCTL WKAREA S21042 05700021 ** 05720000 XCTL DE=(RWTG),SF=(E,(15)) 05740000 * 05760000 WAOFF EQU 32 05780000 PLOFF EQU 4 OFFSET OF DCB ENTRIES 05800000 WGOFF EQU 8 OFFSET OF WTG ENTRIES 05820000 RESTCON DC X'C378' ATTRIBUTES 05840000 DC X'000400' MAIN STORAGE REQUIRED 05860000 DC X'0400' TEXT LENGTH 05880000 OPIDCNST DC C'0S' 05900000 AMIDCNST DC C'1C' 05920000 * 05940000 XCTLTABL ID=(SPLD,AV,PDLOAD,6M),SVC=019 S21042 06010021 EJECT 06030021 * 06080000 ADUMMY DSECT A46862 06090021 ADUMPUT DS A ADDR OF DUMMY PUT RTN A46862 06092021 ADUMPUTL DS A ADDR OF DUMMY PUT LOCATE RTN A46862 06094021 ADUMGET DS A ADDR OF DUMMY GET RTN A46862 06096021 ADUMCHEK DS A ADDR OF DUMMY CHECK RTN A46862 06098021 ADUMIOB DS A ADDR OF DUMMY IOB RTN A46862 06098421 ADUMBSAM DS A ADDR OF DUMMY BSAM RTN A46862 06098821 ADUMCNTR DS A ADDR OF DUMMY CNTRL RTN A46862 06099221 * 06099621 IEZDEB , DEFINE DEB DSECT SA68439 06100021 *** 06120000 IECDSECS CVT,TCB,MAIN,DCB,EXPAND=YES SA68439 06220021 END 06280000