* /* START OF SPECIFICATIONS **** 00050002 *01* PROCESSOR = ASSEMXF-370R 00060002 **** END OF SPECIFICATIONS ***/ 00070002 TITLE 'IGG019VG - CHECK ROUTINE -(OCR)' 00100019 IGG019VG CSECT 00200019 ************************************************************ @YM00638 00250002 *MODULE-NAME @YM00638 00260002 * IGG019VG @YM00638 00270002 * @YM00638 00280002 *DESCRIPTIVE-NAME @YM00638 00290002 * OCR CHECK MODULE @YM00638 00292002 * @YM00638 00294002 *COPYRIGHT @YM00638 00296002 * NONE @YM00638 00298002 * @YM00638 00298402 *CHANGE-ACTIVITY @YM00638 00298802 * 00300019 * RELEASE 20 ADDITIONS/CHANGES/DELETIONS 00390020 *C256000,269000 A33922 00480020 *A523500 A33940 00520001 * RELEASE 21 ADDITIONS/CHANGES/DELETIONS 00570020 * RELEASE 22 ADDITIONS/CHANGES/DELETIONS 00660020 * RELEASE 23 ADDITIONS/CHANGES/DELETIONS 00750020 * RELEASE 24 ADDITIONS/CHANGES/DELETIONS 00840020 * RELEASE 25 ADDITIONS/CHANGES/DELETIONS 00930020 * RELEASE 26 ADDITIONS/CHANGES/DELETIONS 01020020 * RELEASE 27 ADDITIONS/CHANGES/DELETIONS 01110020 * 01200019 * 01300019 * STATUS - CHANGE LEVEL 01 RELEASE 20 01400001 * 01500019 * 01600019 *FUNCTION-CHECK ROUTINE-TO ACQUIRE NEXT SEQUENTIAL IOB AND WAIT FOR 01700019 * COMPLETION (TEST PREVIOUS EXCP STATUS) 01800019 * 1) NORMAL COMPLETION RETURNS TO USER 01900019 * 2) INCOMPLETE ISSUES WAIT 02000019 * 3) ABNORMAL CONDITION GOES TO USERS SYNAD ROUTN 02100019 * 4) EOF CONDITION ISSUES EOV TO EXECUTOR 02200019 * -EIB ROUTINE- 02300019 * 1) SET ERROR INDICATOR BYTE 02400019 * -COMPLETION CODE ROUTINE- 02500019 * 1) SET COMPLETION CODE 02600019 * -COUNTER ROUTINE- 02700019 * 1) UPDATE TEMPORARY ERROR COUNTERS 02800019 *ENTRY POINTS 02900019 * LABEL OCR010 03000019 * LABEL OCR020 03100019 * LABEL OCR030 03200019 * LABEL OCR035 03300019 * 03400019 *ENTRY INSTRUCTION SEQUENCE 03500019 * 03600019 * /CHECK/ /EIB/ /COMP CODE/ 03700019 * LA 1,DECB LA 1,DECB LA 1,DECB 03800019 * L 15,DCBCHECK L 15,DCBCHECK L 15,DCBCHECK 03900019 * BALR 14,15 BAL 14,8(15) BAL 14,16(15) 04000019 * 04100019 * /COUNTER/ 04200019 * L 15,DCBCHECK 04300019 * BAL 14,24(15) 04400019 * 04500019 *INPUT FROM CALLING ROUTINES -/CHECK/EIB/COMP CODE/COUNTER/ ROUTINES 04600019 * REG 0 N/A 04700019 * REG 1 DECB ADDRESS(CHECK) N/A (EIB/CC/CNTR) 04800019 * REG 2-12 N/A(CHECK) 04900019 * REG 2 DCB ADDRESS(EIB/CC/CNTR) 05000019 * REG 3 IOB ADDRESS(EIB/CC/CNTR) 05100019 * REG 8 WORK REG (EIB/CC/CNTR) 05200019 * REG 13 WORK-SAVE ADDRESS 05300019 * REG 14 CALLING ROUTINES IN-LINE RETURN ADDRESS 05400019 * REG 15 BASE ADDRESS(ADDR OF CHECK RTN) 05500019 * 05600019 *OUTPUT TO CALLING ROUTINES -/CHECK/EIB/COMP CODE/ ROUTINES 05700019 * REG 0-1 N/A 05800019 * REG 2-7 SAME AS ENTRY 05900019 * REG 8 N/A FOR SUBROUTINES,SAME AS ENTRY FOR CHECK 06000019 * REG 9-12 SAME AS ENTRY 06100019 * REG 13 WORK-SAVE ADDRESS 06200019 * REG 14 ADDRESS OF IN-LINE RETURN 06300019 * REG 15 RETURN CODE 06400019 * 06500019 *SYNAD REGISTERS - ENTRY FROM CHECK TO SYNAD 06600019 * REG 0 DECB ADDRESS 06700019 * REG 1 DCB ADDRESS 06800019 * REG 2-12 USER SPECIFIED 06900019 * REG 13 WORK-SAVE ADDRESS 07000019 * REG 14 RETURN ADDRESS 07100019 * REG 15 ENTRY ADDRESS 07200019 * ----------EXIT FROM SYNAD TO CHECK 07300019 * REG 0-1 N/A 07400019 * REG 2-12 USER SPECIFIED 07500019 * REG 13 WORK-SAVE ADDRESS 07600019 * REG 14 RETURN ADDRESS 07700019 * REG 15 ZERO OR ADDRESS OF USER SPECIFIED BRANCH ADDRESS 07800019 * 07900019 *EXTERNAL ROUTINES 08000019 * IGG019VH CNTRL 08100019 * IGG019VJ DSPLY 08200019 * IGG019VK RESCN 08300019 * EOV END OF VOLUME ROUTINE 08400019 * 08500019 * 08600019 *EXITS-NORMAL 08700019 * OCR090 BRANCH TO CALLING ROUTINE FROM CHECK 08800019 * OCR145 BRANCH AND LINK TO SYNAD 08900019 * OCR147 BRANCH TO USER SPECIFIED RETURN ADDRESS 09000019 * OCR260 BRANCH TO CALLING ROUTINE FROM EIB ROUTINE 09100019 * OCR330 BRANCH TO CALLING ROUTINE FROM COMP CODE ROUTINE 09200019 * OCR410 BRANCH TO CALLING ROUTINE FROM COUNTER ROUTINE 09300019 * OCR115 EOV EXIT 09400019 * -ABNORMAL 09500019 * ABEND COMPLETION CODE= 001 -NO SYNAD ROUTINE SPECIFIED 09600019 * 09700019 *TABLES/WORKAREAS 09800019 * 09900019 * USER SAVE/WORK AREA 10000019 * DCB 10100019 * IOB 10200019 * DECB 10300019 *ATTRIBUTES--REENTRANT,REUSABLE,PROBLEM PROGRAM MODE 10400019 * 10500019 * 10600019 * 10700019 * 10800019 * 10900019 * 11000019 * 11100019 *********************************************************************** 11200019 * 11300019 * ALL REGISTER EQUATES HAVE AN 'R' AT THE END OF THE SYMBOL 11400019 * 11500019 *********************************************************************** 11600019 PARA0R EQU 0 PARAMETER REGISTER 0 11700019 PARA1R EQU 1 PARAMETER REGISTER 1 11800019 WORK4R EQU 1 WORK REGISTER 11900019 R1 EQU 1 USED IN DOM MACRO 12000019 DCBR EQU 2 DCB ADDRESS 12100019 IOBADR EQU 3 IOB ADDRESS 12200019 WORK1R EQU 7 WORK REGISTER 12300019 BASER EQU 8 BASE REGISTER 12400019 SAVR EQU 13 USER SAVE AREA 12500019 RETR EQU 14 RETURN ADDRESS 12600019 WORK2R EQU 14 WORK REGISTER 12700019 ENTRYR EQU 15 ENTRY ADDRESS 12800019 WORK3R EQU 15 WORK REGISTER 12900019 * 13000019 * 13100019 *********************************************************************** 13200019 *********************************************************************** 13300019 * 13400019 * ERROR INDICATOR BYTE 13500019 * 13600019 *********************************************************************** 13700019 NRBIT EQU X'10' NON RECOVERY 13800019 RMBIT EQU X'40' EQUIPMENT CHECK-REGISTRATION MARK 13900019 ECBIT EQU X'08' EQUIPMENT CHECK 14000019 DCBIT EQU X'01' DATA CHECK 14100019 KCHEBIT EQU X'02' HOPPER EMPTY 14200019 WLRBIT EQU X'04' WRONG LENGTH RECORD 14300019 LSSEPBIT EQU X'20' LATE STKR SELECT OR END OF PAGE 14400019 EIBERR EQU X'FF' ANY ERROR IN DCBEIB 14500019 * 14600019 *********************************************************************** 14700019 * 14800019 * STATUS OR SENSE 14900019 * 15000019 *********************************************************************** 15100019 NONREC EQU X'02' NON RECOVERY ERROR 15200019 EQUCHK EQU X'10' EQUIPMENT CHECK ERROR 15300019 DATACHK EQU X'08' DATA CHECK ERROR 15400019 WLR EQU X'40' WRONG LENGTH RECORD ERROR 15500019 LSSOREOP EQU X'40' LSS OR EOP IN SENSE 15600019 INVCOM EQU X'08' INVALID COMMAND 15700019 SENS0ERR EQU X'24' SENSE ERRORS 15800019 STAT1ERR EQU X'3F' STATUS ERRORS 15900019 COMREJ EQU X'80' COMMAND REJECT 16000019 UNEXCEP EQU X'01' UNIT EXCEPTION IN STATUS IN CSW(IOB) 16100019 STATUSMD EQU X'40' STATUS MODIFIER STATUS BIT 16200019 HPREMPTY EQU X'20' HOPPER EMPTY SENE BIT 16300019 *********************************************************************** 16400019 * 16500019 * COUNTER EQUATES 16600019 * 16700019 *********************************************************************** 16800019 ECCOUNT EQU 0 EQUIP CHECK RETRY COUNT IN USER AREA 16900019 DCRETRY EQU 36 DATA CHECK RETRY COUNT IN IOB 17000019 WLRCOUNT EQU 8 WRNG LNGTH COUNT IN USER AREA 17100019 WLRETRY EQU 37 WRNG LNGTH COUNT IN IOB 17200019 DCCOUNT EQU 20 DATA CHECK RETRY COUNT IN USER AREA 17300019 ECRETRY EQU 38 EQUIP CHECK RETRY COUNT IN IOB 17400019 PERMEC EQU 4 PERMANENT EQUIPMENT CHECK COUNTER 17500019 PERMWLR EQU 12 PERMANENT WRONG LENGTH REC COUNTER 17600019 *********************************************************************** 17700019 * 17800019 * DCB EQUATES 17900019 * 18000019 *********************************************************************** 18100019 HEOPT EQU X'10' HOPPER EMPTY EXIT SPEC IN DCBOPTCD 18200019 EOFBIT EQU X'40' EOF BIT SWITCH IN DCBORBYT 18300019 SYNADOFF EQU X'7F' TURN SYNAD IN PROGRESS BIT OFF 18400019 ERRFLGS EQU X'3F' ERROR FLAGS IN DCBIFLGS-X'C0' 18500019 SYNADBIT EQU X'80' SYNAD-IN-PROCESS BIT IN DCBORBYT 18600019 *********************************************************************** 18700019 * 18800019 * IOB EQUATES 18900019 * 19000019 *********************************************************************** 19100019 IOSIOB EQU 8 OFFSET FROM ACCESS METHOD IOB 19200019 SENSE0 EQU 10 SENSE BYTE 0 IN IOB 19300019 SENSE1 EQU 11 SENSE BYTE 1 IN IOB 19400019 ECBPTR EQU 12 ECB POINTER IN THE IOB 19500019 ECBPT EQU 12 ADDRESS OF ECB IN IOB 19600019 INTCCW EQU 16 INTERRUPTED CCW IN CSW IN IOB 19700019 STATUS EQU 20 STATUS IN CSW IN IOB 19800019 RESIDUAL EQU 22 OFFSET TO THE RESIDUAL COUNT IN CSW 19900019 START EQU 24 OFFSET OF CHANNEL PROGRAM ADDR (IOB) 20000019 TEMCCW EQU 40 OFFSET TO CCW WORK AREA 20100019 FLAGS EQU 4 CCW FLAGS 20200019 CNT EQU 6 COUNT FIELD OFFSET IN CCW 20300019 CHAINBIT EQU X'40' CCW CHAINING BIT 20400019 TESTCOM EQU X'10' TEST COMMAND TEST 20500019 COMASK EQU X'0F' MASK TO TEST FOR RB OR RF 20600019 RFCOM EQU X'02' TEST FOR READ FORWARD COMMAND 20700019 RBCOM EQU X'0C' TEST FOR READ BACKWARD COMMAND 20800019 TICCOM EQU X'08' TIC COMMAND 20900019 LF EQU X'53' LOAD FORMAT COMMAND 21000019 CCWL EQU 8 LENGTH OF ONE CCW 21100019 *********************************************************************** 21200019 * 21300019 * DECB EQUATES 21400019 * 21500019 *********************************************************************** 21600019 DCBOFF EQU 8 DCB OFFSET IN DECB 21700019 IOBOFF EQU 16 IOB OFFSET IN DECB 21800019 COMPLETE EQU X'40' TEST IF ECB POSTED COMPLETE 21900019 PERROR EQU X'41' TEST IF ECB POSTED WITH PERM ERROR 22000019 PERROR44 EQU X'44' TEST IF PERM ERROR @ZA00774 22050003 *********************************************************************** 22100019 CTRLINFO EQU 3 OFFSET TO BYTE3 OF 4 BYTE CONTRL INF 22200019 ADDRESS EQU 3 LENGTH OF AN ADDRESS 22300019 TWO EQU 2 USED AS A CONSTANT OF 2 22400019 RETREG EQU 20 OFFSET IN SAVE AREA FOR RETURN REG 22500019 SAVREG EQU 20 OFFSET IN SAVE AREA FOR USER REGS 22600019 BASESAV EQU 24 OFFSET IN SAVE AREA FOR BASE REG 22700019 TEMPSAV EQU 28 OFFSET IN SAVE AREA FOR TEMP STORAGE 22800019 USERREG EQU 36 OFFSET IN SAVE AREA FOR USER REGS 22900019 CSWSAV EQU 64 OFFSET IN SAVE AREA FOR CSW 23000019 INPREAD EQU X'90' HI ORDER BYTE OF REG 1 FOR SYNAD ENT 23100019 RDNDATA EQU X'80' INDICATES READ DATA 23200019 ONE EQU 1 USED AS A CONSTANT OF 1 23300019 SYSCC EQU 12 USED AS A SHIFT TO SET A SYSTEM C C 23400019 HIBYTE EQU 24 USED TO SHIFT TO HI ORDER BYTE 23500019 ZERO EQU 0 USED AS A CONSTANT OF ZERO 23600019 REGMARK EQU X'04' BYTE 3 OF CONTROL INFORMATION 23700019 FOURRC EQU 4 RETURN CODE OF FOUR 23800019 EIGHTRC EQU 8 RETURN CODE OF EIGHT 23900019 TWELVERC EQU 12 RETURN CODE OF TWELVE 24000019 NOP EQU X'03' NO-OP COMMAND 24100019 * 24200019 * 24300019 * 24400019 *********************************************************************** 24500019 *********************************************************************** 24600019 EJECT 24700019 USING IGG019VG,ENTRYR USE REG 15 AS A TEMPORARY BASE 24800019 USING IHADCB,DCBR USE REG 2 AS DCB BASE 24900019 * 25000019 *********************************************************************** 25100019 * 25200019 * ENTRYS 25300019 * 25400019 *********************************************************************** 25500019 OCR010 STM RETR,BASER,SAVREG(SAVR) SAVE USER REGISTERS 14-8 A33922 25600020 B OCR040 BRANCH TO CHECK ROUTINE 25700019 OCR020 LR BASER,ENTRYR ENTRY POINT + 8 - LOAD NEW BASE REG 25900019 B OCR200 BRANCH TO EIB ROUTINE 26000019 EIGHT DC H'8' FILLER - USED AS CONSTANT OF 8 26100019 OCR030 LR BASER,ENTRYR ENTRY POINT + 16 - LOAD NEW BASE REG 26200019 B OCR300 BRANCH TO COMPLETION CODE ROUTINE 26300019 DC H'0' FILLER 26400019 OCR035 LR BASER,ENTRYR ENTRY +24- LOAD NEW BASE REGISTER 26500019 B OCR400 BRANCH TO ERROR COUNTER ROUTINE 26600019 * 26700019 *********************************************************************** 26800019 OCR040 LR BASER,ENTRYR ENTRY POINT + 0 -NEW BASE REG A33922 26900020 DROP ENTRYR DROP TEMPORARY BASE 27000019 USING IGG019VG,BASER USE NEW BASE REG 27100019 L DCBR,DCBOFF(PARA1R) LOAD DCB ADDRESS FROM DECB 27200019 L IOBADR,IOBOFF(PARA1R) LOAD IOB ADDRESS FROM DECB 27300019 SH IOBADR,EIGHT POINT TO SAM IOB ADDRESS 27400019 MVI DCBEIB+1,ZERO CLEAR RETURN CODE SAVE AREA 27500019 * 27600019 OCR055 TM 0(PARA1R),COMPLETE IS SCHEDULED EVENT COMPLETE 27700019 BO OCR060 IF YES, BRANCH 27800019 * 27900019 WAIT ECB=(PARA1R) WAIT FOR EVENT TO COMPLETE 28000019 * 28100019 OCR060 L PARA1R,DCBWTOID LOAD WTO MESSAGE ID 28200019 LTR PARA1R,PARA1R IS ID EQUAL TO ZERO 28300019 BZ OCR070 IF YES, BRANCH 28400019 * 28500019 DOM MSG=(R1) DELETE OPERATOR MESSAGE 28600019 * 28700019 XC DCBWTOID+1(ADDRESS),DCBWTOID+1 CLEAR WTO ID 28800019 * 28900019 OCR070 BAL RETR,OCR400 BRANCH AND LINK TO COUNTER ROUTINE 29000019 * 29100019 OCR080 TM DCBORBYT,EOFBIT TEST FOR END OF FILE CONDITION 29200019 BZ OCR082 IF NOT, BRANCH AND CHECK FOR ERRORS 29300019 * 29400019 XC STATUS(TWO,IOBADR),STATUS(IOBADR) CLEAR STATUS 29500019 OI STATUS(IOBADR),UNEXCEP SET UNIT EXCEPTION BIT 29600019 B OCR112 BRANCH TO GO TO END OF VOLUME ROUTIN 29700019 * 29800019 OCR082 L WORK1R,ECBPTR(IOBADR) LOAD ECB ADDRESS 29900019 CLI 0(WORK1R),PERROR DID A PERMANENT ERROR OCCUR 30000019 BE OCR100 YES, BRANCH 30100019 CLI 0(WORK1R),PERROR44 DID PERM ERROR OCCUR @ZA00774 30150003 BE OCR100 YES,BRANCH @ZA00774 30160003 * 30200019 OCR085 L RETR,RETREG(SAVR) LOAD RETURN ADDRESS 30300019 SR ENTRYR,ENTRYR CLEAR RETURN CODE REGISTER 30400019 IC ENTRYR,DCBEIB+1 LOAD RETURN CODE 30500019 LM DCBR,BASER,USERREG(SAVR) RESTORE USER REGISTERS 30600019 * 30700019 OCR090 BR RETR RETURN TO USER 30800019 EJECT 30900019 *********************************************************************** 31000019 * 31100019 * THIS CODE EXECUTED IF THERE ARE ANY ERRORS 31200019 * 31300019 *********************************************************************** 31400019 OCR100 BAL RETR,OCR200 BRANCH AND LINK TO EIB ROUTINE 31500019 * 31600019 BAL RETR,OCR300 BRANCH AND LINK TO RETRN CODE ROUTN 31700019 * 31800019 STC ENTRYR,DCBEIB+1 STORE THE RETURN CODE 31900019 * 32000019 TM STATUS(IOBADR),UNEXCEP TEST FOR UNIT EXCEPTION CONDITION 32100019 BZ OCR130 IF NO U.E , BRANCH 32200019 * 32300019 OCR112 NI DCBIFLGS,ERRFLGS RESET ERROR FLGS IN DCB 32400019 MVI DCBORBYT,ZERO CLEAR DCBORBYT 32500019 OCR113 LR PARA0R,IOBADR LOAD IOB ADDRESS TO REG 0 32600019 * 32700019 *********************************************************************** 32800019 * 32900019 * END OF VOLUME EXIT 33000019 * 33100019 *********************************************************************** 33200019 OCR115 EOV 0(DCBR) SVC 55 TO EOV ROUTINE 33300019 *********************************************************************** 33400019 * 33500019 OCR120 LA PARA0R,ONE LOAD 1 TO REG 0 33600019 SLL PARA0R,SYSCC SHIFT LEFT 12 TO SET FOR COMP CODE 33700019 B OCR115 BRANCH TO GO TO THE EOV ROUTINE 33800019 * 33900019 OCR130 MVC CSWSAV(ONE,SAVR),STATUS(IOBADR) SAVE STATUS MODIFIER 34000019 MVC CSWSAV+1(ADDRESS,SAVR),INTCCW+1(IOBADR) SAVE CCW ADDR 34100019 NI CSWSAV(SAVR),STATUSMD CLEAR ALL EXCEPT STATUS MODIFIER 34200019 NI DCBIFLGS,ERRFLGS TURN OFF DCB ERRFLGS 34300019 * 34400019 TM SENSE1(IOBADR),HPREMPTY IS HOPPER EMPTY SENSE PRESENT 34500019 BZ OCR140 NO, BRANCH 34600019 * 34700019 MVI CSWSAV(SAVR),HPREMPTY SAVE HOPPER EMPTY INDICATION 34800019 TM DCBOPTCD,HEOPT SHOULD HOPPER EMPTY EXIT BE TAKEN 34900019 BZ OCR150 NO, BRANCH 35000019 * 35100019 OCR140 CLI DCBSYNAD+3,ONE IS SYNAD ROUTINE SPECIFIED 35200019 BE OCR120 BRANCH TO GO TO THE EOV ROUTINE 35300019 EJECT 35400019 *********************************************************************** 35500019 * 35600019 * GO TO THE USERS SYNAD ROUTINE 35700019 * 35800019 *********************************************************************** 35900019 STM DCBR,IOBADR,TEMPSAV(SAVR) SAVE DCB AND IOB ADDRESSES 36000019 L PARA0R,ECBPT(IOBADR) LOAD DECB ADDRESS 36100019 LA PARA1R,INPREAD LOAD INPUT AND DATA BITS 36200019 L WORK3R,INTCCW(IOBADR) LOAD ADDRESS OF INT CCW 36300019 LA WORK3R,0(WORK3R) CLEAR HI ORDER BYTE 36400019 SH WORK3R,EIGHT BACK UP ONE CCW 36500019 MVC TEMCCW(ONE,IOBADR),0(WORK3R) MOVE COMMAND TO WORK AREA 36600019 NI TEMCCW(IOBADR),COMASK CLEAR TO TEST FOR READ COMMANDS 36700019 CLI TEMCCW(IOBADR),RBCOM TEST FOR READ BACKWARD COMMAND 36800019 BE OCR142 BRANCH IF READ BACKWARD 36900019 CLI TEMCCW(IOBADR),RFCOM TEST FOR A READ FORWARD COMMAND 37000019 BNE OCR143 BRANCH IF NOT A READ FORWARD 37100019 OCR142 CLC RESIDUAL(TWO,IOBADR),CNT(WORK3R) COMP RESIDUAL TO ORIGNL 37200019 BL OCR144 BRANCH IF DATA READ 37300019 OCR143 LA PARA1R,RDNDATA SET TO NO DATA READ 37400019 OCR144 SLL PARA1R,HIBYTE SHIFT TO HIGH ORDER BYTE 37500019 OR PARA1R,DCBR OR DCB ADDRESS TO REG 1 37600019 * 37700019 OI DCBORBYT,SYNADBIT SET SYNAD IN PROCESS BIT ON 37800019 L ENTRYR,DCBSYNAD LOAD SYNAD ROUTINE ADDRESS 37900019 * 38000019 * 38100019 LM DCBR,BASER,USERREG(SAVR) RESTORE USER REGISTERS 38200019 OCR145 BALR RETR,ENTRYR BRANCH AND LINK TO SYNAD ROUTINE 38300019 * 38400019 STM DCBR,BASER,USERREG(SAVR) SAVE USER REGISTERS 38500019 L BASER,BASESAV(SAVR) RESTORE BASE REGISTER 38600019 LM DCBR,IOBADR,TEMPSAV(SAVR) RESTORE DCB AND IOB REGS 38700019 NI DCBORBYT,SYNADOFF TURN SYNAD IN PROCESS BIT OFF 38800019 NI DCBIFLGS,ERRFLGS TURN ERROR FLAGS OFF 38900019 LTR ENTRYR,ENTRYR TEST REG 15 FOR ZEROS 39000019 BZ OCR150 BRANCH TO RESTART IF ZERO 39100019 NI DCBORBYT,ZERO RESET DCBORBYT SWITCHES 39200019 LM DCBR,BASER,USERREG(SAVR) RESTORE USER REGISTERS 39300019 OCR147 BR ENTRYR BRANCH TO ADDRESS IN REGISTER 15 39400019 EJECT 39500019 *********************************************************************** 39600019 * 39700019 * RESTART PROCEDURE 39800019 * 39900019 *********************************************************************** 40000019 OCR150 L WORK1R,CSWSAV(SAVR) LOAD SAVED INTCCW ADDRESS 40100019 LA WORK1R,0(WORK1R) CLEAR HIGH ORDER BYTE 40200019 SH WORK1R,EIGHT BACK UP 1 CCW 40300019 * 40400019 LR WORK2R,WORK1R LOAD CHANNEL PROGRAM RESTART ADDR 40500019 TM CSWSAV(SAVR),HPREMPTY CHECK IF HOPPER EMPTY OCCURED 40600019 BZ OCR165 BRANCH IF NOT HOPPER EMPTY 40700019 CLI 0(WORK2R),NOP DID HOPPER EMPTY OCCUR ON NOP 40800019 BNE OCR170 BRANCH TO RESTART THE INT COMMAND 40900019 * 41000019 OCR165 TM FLAGS(WORK1R),CHAINBIT IS CCW CHAINING BIT ON 41100019 BZ OCR085 NO, BRANCH 41200019 LA WORK2R,CCWL(WORK1R) INCREMENT TO NEXT CCW 41300019 TM 0(WORK1R),TESTCOM WAS INT CCW A TEST COMMAND 41400019 BZ OCR160 NO, BRANCH 41500019 * 41600019 TM CSWSAV(SAVR),STATUSMD WAS STATUS MODIFIER ON 41700019 BZ OCR160 NO, BRANCH 41800019 * 41900019 LA WORK2R,CCWL(WORK2R) INCREMENT TO NEXT CCW 42000019 * 42100019 OCR160 CLI 0(WORK2R),TICCOM IS COMMAND A TIC 42200019 BNE OCR170 NO, BRANCH 42300019 * 42400019 L WORK2R,0(WORK2R) GET NEW CCW ADDRESS FROM TIC 42500019 LA WORK2R,0(WORK2R) CLEAR HIGH ORDER BYTE 42600019 B OCR160 BRANCH TO CHECK IF TIC COMM 42700019 * 42800019 OCR170 ST WORK2R,START(IOBADR) STORE ADDRESS OF CHANNEL PROG(IOB) 42900019 LA PARA1R,IOSIOB(IOBADR) POINT TO IOS IOB 43000019 * 43100019 EXCP (PARA1R) RESTART CHANNEL PROGRAM 43200019 L PARA1R,ECBPT(IOBADR) LOAD ADDRESS OF ECB 43300019 LA PARA1R,0(PARA1R) CLEAR HI ORDER BYTE 43400019 B OCR055 BRANCH TO TEST COMPLETION 43500019 EJECT 43600019 *********************************************************************** 43700019 * 43800019 * ERROR INDICATOR BYTE (EIB) ROUTINE 43900019 * 44000019 *********************************************************************** 44100019 OCR200 MVI DCBEIB,ZERO CLEAR EIB 44200019 L WORK3R,DCBERRCN LOAD FROM DCBERRCN POSSIBLE AREA ADR 44300019 * 44400019 TM SENSE0(IOBADR),NONREC DID NON-RECOVERY ERROR OCCUR 44500019 BZ OCR210 NO, BRANCH 44600019 OI DCBEIB,NRBIT SET NON-RECOVERY BIT 44700019 * 44800019 OCR210 TM SENSE0(IOBADR),EQUCHK DID AN EQ CHK ERROR OCCUR 44900019 BZ OCR220 NO,BRANCH 45000019 LTR WORK3R,WORK3R IS ERRCNT ADDRESS SPECIFIED 45100019 BZ OCR215 NO, BRANCH 45200019 L WORK4R,PERMEC(WORK3R) LOAD PERMANENT EQUIP CHK COUNT 45300019 LA WORK4R,ONE(WORK4R) INCREMENT COUNT BY 1 45400019 ST WORK4R,PERMEC(WORK3R) STORE COUNT 45500019 * 45600019 OCR215 L WORK4R,INTCCW(IOBADR) GET INTERRUPTED CCW ADR FROM CSW 45700019 LA WORK4R,0(WORK4R) CLEAR HI ORDER BYTE 45800019 SH WORK4R,EIGHT BACK UP ONE CCW 45900019 CLI 0(WORK4R),LF IS COMMAND A LOAD FORMAT 46000019 BNE OCR217 NO, BRANCH 46100019 L WORK4R,0(WORK4R) LOAD THE DATA ADDRESS FROM LF CCW 46200019 LA WORK4R,0(WORK4R) CLEAR HI ORDER BYTE 46300019 TM CTRLINFO(WORK4R),REGMARK IS IT A LF FOR A REG MARD 46400019 BZ OCR217 NO,BRANCH 46500019 OI DCBEIB,RMBIT SET EQUIPMENT CHECK ON REG MARK BIT 46600019 B OCR220 IN DCBEIB 46700019 OCR217 OI DCBEIB,ECBIT SET EQUIPMENT CHECK BIT IN DCBEIB 46800019 * 46900019 OCR220 TM SENSE0(IOBADR),DATACHK DID A DATA CHECK ERROR OCCUR 47000019 BZ OCR230 NO, BRANCH 47100019 OI DCBEIB,DCBIT SET DATA CHECK BIT IN DCBEIB 47200019 * 47300019 OCR230 TM SENSE1(IOBADR),HPREMPTY DID HOPPER EMPTY OCCUR 47400019 BZ OCR240 NO,BRANCH 47500019 OI DCBEIB,KCHEBIT SET HOPPER EMPTY BIT IN DCBEIB 47600019 * 47700019 OCR240 TM STATUS+1(IOBADR),WLR DID WRONG LNGTH RECORD OCCUR 47800019 BZ OCR250 NO,BRANCH 47900019 OI DCBEIB,WLRBIT SET WRONG LENGTH REC BIT IN DCBEIB 48000019 LTR WORK3R,WORK3R IS ERRCNT ADDRESS SPECIFIED 48100019 BZ OCR250 NO, BRANCH 48200019 L WORK4R,PERMWLR(WORK3R) LOAD PERMANENT WLR COUNT 48300019 LA WORK4R,ONE(WORK4R) INCREMENT COUNT BY 1 48400019 ST WORK4R,PERMWLR(WORK3R) STORE COUNT 48500019 * 48600019 OCR250 TM SENSE1(IOBADR),LSSOREOP DID LATE STKR SEL OR EOP OCCUR 48700019 BCR 8,RETR NO,BRANCH 48800019 OI DCBEIB,LSSEPBIT SET LSS OR EOP BIT IN DCBEIB 48900019 * 49000019 OCR260 BR RETR RETURN TO CALLING ROUTINE 49100019 EJECT 49200019 *********************************************************************** 49300019 * 49400019 * COMPLETION CODE ROUTINE 49500019 * 49600019 *********************************************************************** 49700019 OCR300 SR ENTRYR,ENTRYR CLEAR RETURN CODE REGISTER 49800019 TM DCBEIB,EIBERR TEST FOR ERROR INDICATED IN THE EIB 49900019 BZ OCR310 IF NONE , BRANCH 50000019 LA ENTRYR,FOURRC SET RETURN CODE OF FOUR 50100019 * 50200019 OCR310 TM SENSE0(IOBADR),COMREJ TEST FOR COMMAND REJECT 50300019 BO OCR315 IF YES, BRANCH TO SET RETURN CODE 50400019 TM SENSE1(IOBADR),INVCOM TEST FOR INVALID COMMAND 50500019 BZ OCR320 IF NOT, BRANCH 50600019 OCR315 LA ENTRYR,EIGHTRC SET RETURN CODE OF EIGHT 50700019 * 50800019 OCR320 TM SENSE0(IOBADR),SENS0ERR TEST FOR ERRORS IN SENSE 50900019 BNZ OCR325 BRANCH IF NO ERRORS ARE FOUND 51000019 TM STATUS+1(IOBADR),STAT1ERR TEST FOR ERRORS IN STATUS 51100019 BCR 8,RETR NO,BRANCH 51200019 OCR325 LA ENTRYR,TWELVERC SET RETURN CODE OF TWELVE 51300019 * 51400019 OCR330 BR RETR RETURN TO CALLING ROUTINE 51500019 EJECT 51600019 *********************************************************************** 51700019 * 51800019 * ERROR COUNTER ROUTINE 51900019 * 52000019 *********************************************************************** 52100019 * 52200019 OCR400 L WORK4R,DCBERRCN LOAD ADDRESS OF COUNTERS 52300019 MVI DCBEIB,ZERO RESET EIB BYTE TO ZERO A33940 52350001 LTR WORK4R,WORK4R ARE COUNTERS SPECIFIED 52400019 BCR 8,RETR NO,BRANCH 52500019 * 52600019 SR WORK3R,WORK3R CLEAR COUNT REGISTER 52700019 IC WORK3R,DCRETRY(IOBADR) LOAD DATA CHECK RETRY COUNT 52800019 A WORK3R,DCCOUNT(WORK4R) INCREMENT BY NUMBER OF RETRYS 52900019 ST WORK3R,DCCOUNT(WORK4R) STORE DATA CHECK RETRY COUNT 53000019 * 53100019 SR WORK3R,WORK3R CLEAR COUNT REGISTER 53200019 IC WORK3R,ECRETRY(IOBADR) LOAD EQUIP CHECK RETRY COUNT 53300019 A WORK3R,ECCOUNT(WORK4R) INCREMENT BY NUMBER OF RETRYS 53400019 ST WORK3R,ECCOUNT(WORK4R) STORE EQUIP CHECK RETRY COUNT 53500019 * 53600019 SR WORK3R,WORK3R CLEAR COUNT REGISTER 53700019 IC WORK3R,WLRETRY(IOBADR) LOAD WLR RETRY COUNT 53800019 A WORK3R,WLRCOUNT(WORK4R) INCREMENT BY NUMBER OF RETRYS 53900019 ST WORK3R,WLRCOUNT(WORK4R) STORE WLR RETRY COUNT 54000019 XC DCRETRY(3,IOBADR),DCRETRY(IOBADR) CLEAR IOB COUNTERS 54050019 * 54100019 OCR410 BR RETR RETURN TO CALLING ROUTINE 54200019 EJECT 54300019 *********************************************************************** 54400019 * 54500019 * 54600019 CNOP 0,8 PAD TO DOUBLE WORD 54700019 DCBD DSORG=PS,DEVD=OR @YM00635 54800002 END 54900019