* /* START OF SPECIFICATIONS **** 00010002 *01* PROCESSOR = ASSEMXF-370R 00020002 **** END OF SPECIFICATIONS ***/ 00030002 IGE0011D CSECT ENTRY POINT FOR 1288 ERP 00050019 TITLE 'IGE0011D - 1288 OPTICAL CHARACTER READER ERP' 00100019 *********************************************************************** 00200019 *MODULE-NAME @YM00638 00210002 * IGE0011D @YM00638 00220002 * @YM00638 00222002 *DESCRIPTIVE-NAME @YM00638 00224002 * OCR ERP MODULE FOR 1288 DEVICE @YM00638 00226002 * @YM00638 00228002 *COPYRIGHT @YM00638 00228402 * NONE @YM00638 00228802 * @YM00638 00229202 *CHANGE-ACTIVITY @YM00638 00229602 * RELEASE 20 ADDITIONS/CHANGES/DELETIONS 00230020 *C503000 A33926 00260020 *D360000 A33936 00270001 *C482000,533000 A33936 00280001 * 00285001 * RELEASE 21 ADDITIONS/CHANGES/DELETIONS 00290001 *C17600,180000 21797 00295001 *C379000-382000 A39680 00297001 * 00297602 * RELEASE VS/2 2.0 ADDITIONS / CHANGES / DELETIONS 00298202 *A258000 YM2510 00298502 *A222000 Y02967 00298802 *C046000,069000,073000,075000,079000,096000-097000,150000,151000 Y02967 00305802 *C162000,256000-257000,261000-262000,266000,268000-272000,273000 Y02967 00312802 *C276000,283000-284000,286000-288000,290000-292000,305000-307000 Y02967 00319802 *C310000,330000,347000,350000,356000,363000-365000,369000,372000 Y02967 00326802 *C379000-382000 A01004 00333802 *C376000,403000,404000,409000-411000,415000,430000-431000,433000 Y02967 00340802 *C435000,437000-439000,441000-442000,448000-457000,459000-467000 Y02967 00347802 *C471000,473000-4740008478000,480000-481000,497000,499000-502000 Y02967 00354802 *C506000,508000,511000,513003-514000,520000,524000,526000-527000 Y02967 00361802 *C534000, Y02967 00368802 *C174000,433000,435000 YM2510 00370802 *C247000,430400,448800,450400 YM2511 00372802 *D071000-072000,093000-095000,098000-103000,116000-124000 Y02937 00375802 *D132000-138000,207000-210000,294000-304000, 00382802 *TITLE 'IGE0011D' - 1288 ERROR RECOVERY PROCEDURES * 00400019 * * 00500019 * STATUS RELEASE VS2 / 2.0 CHANGE LEVEL 0000 00600002 * * 00700019 *FUNCTION/OPERATION IGE0011D IS SCHEDULED FOR EXECUTION WHENEVER THE* 00800019 * I/O SUPERVISOR DETECTS AN ERROR ASSOCIATED WITH THE 1288 OPTICAL * 00900019 * CHARACTER READER THAT REQUIRES ERROR RECOVERY PROCEDURES. * 01000019 * * 01100019 * * 01200019 * THE ERROR ROUTINE USES THE STANDARD ERROR INTERPRETER ROUTINE FOR * 01300019 * TESTING OF SENSE BITS AND CSW STATUS BITS. THE FOLLOWING ACTIONS * 01400019 * ARE TAKEN DEPENDING UPON THE NATURE OF THE ERROR * 01500019 * * 01600019 * 1) NORMAL CONDITION OR SUCCESSFUL RETRY OF RECOVERABLE ERROR * 01700019 * CONDITION * 01800019 * * 01900019 * IOSB EXCEPTION, ERROR FLAGS ARE CLEARED AND CONTROL IS @YM00636 02000002 * TRANSFERRED TO THE STATISTICS UPDATE ROUTINE. * 02100019 * 2) RECOVERABLE ERROR * 02200019 * * 02300019 * IOSB ERROR FLAG IS SET. @YM00636 02400002 * IOSB EXCEPTION FLAG IS CLEARED. @YM00636 02500002 * ERROR COUNTS ARE UPDATED. * 02600019 * CONTROL IS PASSED TO THE I/O SUPERVISOR VIA SVC 15 AND SVC 3 * 02700019 * TO RETRY THE CHANNEL PROGRAM. * 02800019 * * 02900019 * 3) PERMANENT ERROR * 03000019 * IOSB ERROR AND EXCEPTION FLAGS ARE SET. @YM00636 03100002 * IOSB MESSAGE AND LOGOUT FLAGS MAY BE SET. @YM00636 03200002 * CONTROL IS RETURNED TO THE I/O SUPERVISOR EITHER DIRECTLY * 03300019 * THROUGH ISSUANCE OF AN SVC 15 AND AN SVC 3 OR INDIRECTLY BY * 03400019 * FIRST PASSING CONTROL TO THE WTO ROUTINE WHICH IN TURN PASSES * 03500019 * CONTROL TO THE STATISTICS UPDATE ROUTINE AND THE I/O OUTBOARD * 03600019 * RECORDING ROUTINE, IF REQUIRED, AND EVENTUALLY TO THE I/O * 03700019 * SUPERVISOR. * 03800019 * * 03900019 *ENTRY POINTS * 04000019 * IGE0011D - ERROR RECOVERY PROCEDURE ENTRY POINT * 04100019 * * 04200019 * DATA PASSED TO THE ROUTINE CONSISTS OF STANDARD SYSTEM CONTROL* 04300019 * BLOCKS. * 04400019 * * 04500019 *INPUT IOSB POINTER IN REGISTER 1 Y02967 04600002 * * 04700019 *OUTPUT I/O ERROR AND INTERVENTION REQUIRED MESSAGES IN SOME INSTANCES* 04800019 * * 04900019 *EXTERNAL ROUTINES ERROR INTERPRETER ROUTINE * 05000019 * * 05100019 *EXITS-NORMAL XCTL TO STATISTICS UPDATE ROUTINE FOLLOWING SUCCESSFUL * 05200019 * RECOVERY OF A RETRYABLE ERROR OR UPON DETECTION OF A NORMAL * 05300019 * CONDITION. * 05400019 * * 05500019 * -ERROR * 05600019 * * 05700019 * 1) SVC 15 AND SVC 3 EXIT TO I/O SUPERVISOR FOR RE-EXECUTION OF * 05800019 * THE CHANNEL PROGRAM UPON DETECTION OF A RETRYABLE ERROR. * 05900019 * * 06000019 * 2) XCTL TO WTO ROUTINE FOR ISSUANCE OF A PERMANENT I/O ERROR * 06100019 * MESSAGE AND UPDATING OF STATISTICS AND SYS1.LOGREC IN THE CASE* 06200019 * OF SOME PERMANENT ERRORS. * 06300019 * * 06400019 * 3) SVC 15 AND SVC 3 EXIT TO I/O SUPERVISOR IN THE CASE OF SOME * 06500019 * PERMANENT I/O ERRORS. * 06600019 * * 06700019 *TABLES/WORK AREAS * 06800019 * 1) INPUT/OUTPUT SYSTEM BLOCK (IOSB) Y02967 06900002 * * 07000019 * 3) DYNAMIC WORK AREA Y02967 07300002 * * 07400019 * 4) STATISTICS UPDATE TABLE Y02967 07500002 * * 07600019 *ATTRIBUTES * 07700019 * * 07800019 * RE-ENTRANT,SUPERVISOR MODE Y02967 07900002 * * 08000019 *NOTES * 08100019 * * 08200019 * N/A * 08300019 * * 08400019 * * 08500019 *********************************************************************** 08600019 EJECT @YA00406 08650002 *********************************************************************** 13900019 * * 14000019 * STATUS INDICATORS * 14100019 * * 14200019 *********************************************************************** 14300019 CSWUCK EQU X'02' UNIT CHECK 14400019 *********************************************************************** 14500019 * * 14600019 * REGISTER DEFINITION * 14700019 * * 14800019 *********************************************************************** 14900019 IOSBREG EQU 1 IOSB REG @YM00636 15000002 RVREG EQU 1 WORK REGISTER Y02967 15050002 CCWREG EQU 2 CCW ADDRESS REGISTER 15100019 WORKR3 EQU 3 WORK REGISTER @YM00636 15150002 ERREG EQU 4 WORK REGISTER 15200019 WORKR4 EQU 4 WORK REGISTER @YM00636 15300002 WORKR5 EQU 5 WORK REGISTER @YM00636 15500002 WORKR6 EQU 6 WORK REGISTER @YM00636 15600002 COMREG EQU 8 COMMUNICATION TABLE REG 15900019 SVREG EQU 9 WORK REGISTER 16000019 WORKR9 EQU 9 WORK REGISTER @YM00636 16100002 ERPREG EQU 10 DYNAMIC WORKAREA REG Y02967 16200002 VTLREG EQU 11 ADDR OF VIRTUAL I/O AREA Y02967 16250002 LINKR EQU 12 WORK REGISTER 16300019 ERRE1 EQU 13 WORK REGISTER 16500019 ERRETR EQU 14 RETURN REG 16600019 BASREG EQU 15 BASE REGISTER 16700019 *********************************************************************** 16800019 * * 16900019 * RETRY COUNTS * 17000019 * * 17100019 *********************************************************************** 17200019 BOCOUNT EQU X'08' TEST FOR BUS OUT CHECK RETRIED 17300019 CDCCNT EQU X'08' TEST FOR CHANNEL DATA CHK @YM00636 17400002 CCCNT EQU 5 TEST FOR CHAINING CHECK RETRY 17500002 EQCNT EQU X'03' TEST FOR EQUIPMENT CHECK RETRY 21797 17600001 DCCOUNT1 EQU X'03' DOCUMENT DATA CHECK RETRY COUNT 17700019 INCCOUNT EQU 16 INCREMENT FOR OVERRUN RETRY COUNT 17800019 ORCOUNT EQU X'50' OVERRUN RETRY COUNT (FIVE) 17900019 ILCOUNT EQU X'03' INCORRECT LENGTH RETRY COUNT 21797 18000001 EJECT @YA00406 18050002 *********************************************************************** 18100019 * * 18200019 * MISCELLANEOUS DEFINITIONS * 18300019 * * 18400019 *********************************************************************** 18500019 VEXCTL EQU 44 ADDR OF XCTL ROUTINE 18600019 STAUPRTN EQU 254 STATISTICS UPDATE ROUTINE 18700019 CVTADDR EQU 16 POINTER TO CVT ADDRESS 18800019 BYTECNT EQU 6 DISPLACMENT TO BYTE COUNT IN CCW 18900019 CLRCNT EQU X'03' BYTE COUNT FOR CLEARING COUNTERS 19300019 CHINTCHK EQU X'06' TEST FOR CHANNEL OR INTERFACE CHECK 19400019 SNSLEN EQU 2 LENGTH OF SENSE BYTES TO PUT IN STATA 19700019 EOP EQU X'40' TEST FOR END OF PAGE 19900019 NODOC EQU X'20' TEST FOR NO DOCUMENT FOUND 20000019 INVSNS EQU X'97' TEST FOR INVALID SENSE BITS 20100019 INVSNS1 EQU X'01' TEST FOR INVALID SENSE BIT 20200019 CLEARCNT EQU X'02' COUNT OF ERROR COUNTER BYTES TO CLEAR 20300019 ERRORSVC EQU 15 ERROR EXCP 20400019 RETSVC EQU 3 RETURN TO IOS SVC 20500019 ERPIBLEN EQU 8 ERPIB LENGTH 21300019 DC EQU 0 DISPLACEMENT TO DATA CHECK COUNTS 21400019 ILC EQU 1 DISPLACEMENT TO INCORRECT LENGTH CNTS 21500019 EC EQU 2 DISPLACEMENT TO EQUIPMENT CHECK CNTS 21600019 ZEROCNT EQU X'0F' TEST FOR FIRST RETRY, INC LENGTH 21800019 VFCT68 EQU 68 INDEX TO INTERPRETER ROUTINE 22000019 WTORTN EQU 253 LOAD NAME TO WTO RTN. 22200019 VFCF120 EQU X'0120' DISPLACEMENT TO TRANSLATE RTN Y02967 22700002 CCWFLAG EQU 4 DISPLACEMENT TO CCW FLAG BYTE Y02967 23200002 IDA EQU X'04' TEST FOR INDIRECT ADDRESS Y02967 23700002 IOB EQU X'05' DISPLACEMENT TO IOB @YM00636 24200002 IOSERRCT EQU X'1C' DISP TO IOSB ERROR CNT @YM00636 24250002 ADDRLN EQU 3 LENGTH OF 3 USED FOR COMPARE @YA00406 24300002 EJECT @YA00406 24350002 USING *,BASREG 25500019 USING EWA,ERPREG BASE FOR WORK AREA Y02967 25600002 USING IOSB,IOSBREG BASE REG FOR IOSB @YM00636 25650002 L ERPREG,IOSERP GET WORK AREA ADDRESS Y02967 25750002 L COMREG,CVTADDR GET CVT ADDRESS 25800019 OI IOSFLA,IOSEX SET EXCEPTION CONDITION ON @YM00636 25850002 TM IOSFLA,IOSERR ERP IN CONTROL @YM00636 25900002 BO ERR000 YES CONTINUE 26000019 * CLEAR IOSB ERROR COUNTERS @YM00636 26050002 XC EWACNTR1(CLRCNT),EWACNTR1 CLEAR COUNT Y02967 26100002 ERR000 CLI IOSCOD,IOSFINTC IS IS AN INTERCEPT CONDITION @YM00636 26200002 BE ERR0012 YES SEE IF CHANNEL ERROR 26300019 CLI IOSCOD,IOSERRC CHECK FOR X'41' IN ECB @YA00406 26350002 BNE ERR001A NO,CONTINUE @YA00406 26360002 CLC IOSCSWCA(ADDRLN),WKAREA IS CCW ADDRESS VALID? @YA00406 26370002 BE ERR007 NO,PERMANENT ERROR @YA00406 26380002 ERR001A TM IOSFLA,IOSACHN IS IT MIXED CHAINING @YA00406 26400002 BO ERR0012 YES SEE IF CHANNEL ERROR 26500019 TM IOSCC,IOSCC1 CODE EQUAL 10 @YM00636 26600002 BZ ERR002 NO CONTINUE 26700019 L CCWREG,IOSVST LOAD VIRTUAL ADDRESS OF CCW Y02967 26800002 B ERR003 CONTINUE Y02967 27000002 ERR0012 TM IOSTSB,CHINTCHK CHANNEL OR INTERFACE CHK @YM00636 27300002 BZ ERR007 NO EXIT TO WTO ROUTINE 27400019 B ERR010 YES TO CHANNEL+INTERFACE CHK RTN 27500019 ERR002 L CCWREG,IOSCSW-1 GET CCW ADDRESS Y02967 27600002 LA CCWREG,0(CCWREG) CLEAR HIGH ORDER BYTE 27700019 SH CCWREG,ERRON1 BACK UP ONE CCW 27800019 TM IOSFLA,IOSCCHN IS COMMAND CHAINING USED @YM00636 27900002 BZ ERR003 NO SET UP FOR WTO 28000019 TM IOSFLA,IOSERR ENTERED AFTER RETRY @YM00636 28100002 BZ ERR002A NO CONTINUE 28200019 LRA ERREG,0(CCWREG) LOAD REAL ADDR OF CCW Y02967 28300002 S ERREG,IOSRST SUBTRACT RESTART ADDRESS Y02967 28400002 BE ERR003 IF EQUAL ERROR 28500019 LA WORKR5,EWACNTR1 POINT TO IOSB ERROR CNTRS @YM00636 28600002 LA WORKR6,EWCCNTRS POINT TO TEMPORARY ERROR @YM00636 28700002 * COUNTERS @YM00636 28800002 BAL LINKR,ERR018 LINK TO COUNTER UPDATE ROUTINE 28900019 ERR002A LRA ERREG,0(CCWREG) LOAD REAL ADDR OF CHANNEL PGM Y02967 29000002 ST ERREG,IOSRST SAVE CCW START ADDRESS Y02967 29100002 ERR003 TM IOSTSA,CSWUCK IS IT UNIT CHECK @YM00636 29200002 BZ ERR004 NO DETERMINE ERROR TYPE 29300019 OC EWASTUP(SNSLEN),IOSSNS OR SENSE BITS Y02967 30500002 NC EWASTUP(SNSLEN),MASKOUT MASK UNWANTED BITS Y02967 30600002 NI EWASTUP+1,EOP CLEAR POSSIBLE END OF PAGE Y02967 30700002 ERR004 LR SVREG,BASREG SAVE BASE REGISTER 30800019 L BASREG,VFCT68(COMREG) GET INTERPRETER ROUTINE ADDRESS 30900019 ERR0041 BALR ERRETR,BASREG LINK TO INTERPRETER Y02967 31000002 DC X'1D' TEST FOR CHANNEL CONTROL CHECK 31100019 DC AL1(ERR010L-ERR0041-2) BRANCH TO CCC ACTION 31200019 DC X'1E' TEST FOR INTERFACE CONTROL CHECK 31300019 DC AL1(ERR010L-ERR0041-4) BRANCH TO ICC ACTION 31400019 DC X'1C' TEST FOR CHANNEL DATA CHECK 31500019 DC AL1(ERR200L-ERR0041-6) BRANCH TO CDC ACTION 31600019 DC X'10' TEST FOR ATTENTION 31700019 DC AL1(ERR007-ERR0041-8) BRANCH TO ATTENTION ACTION 31800019 DC X'12' TEST FOR CONTROL UNIT END 31900019 DC AL1(ERR007-ERR0041-10) BRANCH TO CUE ACTION 32000019 DC X'16' TEST FOR UNIT CHECK 32100019 DC AL1(ERR006-ERR0041-12) BRANCH TO UNIT CHECK ACTION 32200019 DC X'2F' END OF LIST 32300019 DC AL1(ERR004B-ERR0041-14) PASS CONTROL TO ERR004B 32400019 * FOLLOWING BRANCHES GO TO ROUTINES MORE THAN 128 BYTES AWAY 32450019 ERR010L B ERR010 GO TO ERR010 32500019 ERR200L B ERR200 GO TO CDC ROUTINE 32600019 ERR004B LR SVREG,BASREG SAVE BASE REGISTER 32800019 L BASREG,VFCT68(COMREG) GET INTERPRETER ROUTINE ADDRESS 32900019 ERR004B1 BALR ERRETR,BASREG LINK TO INTERPRETER Y02967 33000002 DC X'1F' TEST FOR CHAINING CHECK 33100019 DC AL1(ERR011L-ERR004B1-2) BRANCH TO CC ACTION 33200019 DC X'1A' TEST FOR PROGRAM CHECK 33300019 DC AL1(ERR007A-ERR004B1-4) BRANCH TO PC ACTION 33400019 DC X'1B' TEST FOR PROTECTION CHECK 33500019 DC AL1(ERR007A-ERR004B1-6) BRANCH TO PC ACTION 33600019 DC X'19' TEST FOR INCORRECT LENGTH 33700019 DC AL1(ERR017L-ERR004B1-8) BRANCH TO IL ACTION 33800019 DC X'17' CHECK FOR UNIT EXCEPTION 33900019 DC AL1(ERR013L-ERR004B1-10) BRANCH TO UE ACTION 34000019 DC X'2F' END OF LIST 34100019 DC AL1(ERR004B2-ERR004B1-12) PASS CONTROL TO ERR004B2 34200019 * THESE BRANCHS GO TO ROUTINES MORE THAN 128 BYTES AWAY 34250019 ERR011L B ERR011 GO TO CC ACTION 34300019 ERR017L B ERR017 GO TO IL ACTION 34400019 ERR013L B ERR013 GO TO UE-ACTION 34500019 ERR004B2 TM IOSTSA,CSWUCK IS UNIT CHECK POSTED @YM00636 34700002 BZ ERR005 NO TO STATISTICS UPDATE ROUTINE 34900019 ERR004C TM IOSSNS+1,EOP IS IT END OF PAGE Y02967 35000002 BO ERR008 YES EXIT TO IOS 35200019 ERR004D TM IOSSNS+1,NODOC IS NO DOCUMENT POSTED Y02967 35600002 BO ERR005B YES CLEAN UP 35700019 ERR005 NI IOSFLA,X'FF'-IOSEX CLEAR EXCEPTION, ERR CORRECT @YM00636 35800002 B ERR005B CONTINUE CLEAN UP 35900019 ERR005B NI IOSFLA,X'FF'-IOSERR CLEAR IOSERR @YM00636 36100002 LA ERRE1,STAUPRTN LOAD NAME OF STATISTICS UPDATE RTN 36200019 ERR005C LA WORKR5,EWCCNTRS POINT TO TEMPORARY ERROR @YM00636 36300002 * COUNTERS @YM00636 36400002 LA WORKR6,EWACNTR1 POINT TO IOSB ERROR COUNTERS Y02967 36500002 BAL LINKR,ERR018 LINK TO COUNTER UPDATE ROUTINE 36600019 L ERRETR,VEXCTL(COMREG) GET ADDRESS OF XCTL ROUTINE 36700019 BR ERRETR EXIT VIA XCTL 36800019 ERR006 TM IOSSNS+1,INVSNS ANY INVALID SENSE BITS ON Y02967 36900002 BC 5,ERR007 YES ALL DONE-CLEAN UP 37000019 ERR006A TM IOSSNS,INVSNS1 INVALID SENSE BITS ON Y02967 37200002 BO ERR007 YES GO CLEAN UP 37300019 ERR006B LR SVREG,BASREG SAVE BASE ADDRESS 37400019 L BASREG,VFCT68(COMREG) GET INTERPRETER ROUTINE ADDRESS 37500019 ERR006C BALR ERRETR,BASREG LINK TO INTERPRETER ROUTINE Y02967 37600002 DC X'03' TEST FOR EQUIPMENT CHECK 37700019 DC AL1(ERR012L-ERR006C-2) BRANCH TO EC ROUTINE @YM00636 37800002 DC X'06' TEST FOR NONRECOVERY A01004 37900002 DC AL1(ERR007-ERR006C-4) BRANCH TO NOCREC ROUTINE A01004 38000002 DC X'01' TEST FOR INTERVENTION REQUIRED A01004 38100002 DC AL1(ERR006D-ERR006C-6) BRANCH TO IR ROUTINE A01004 38200002 DC X'02' TEST FOR BUS OUT CHECK 38300019 DC AL1(ERR015L-ERR006C-8) BRANCH TO BUS OUT CHECK ROUTINE 38400019 DC X'04' TEST FOR DATA CHECK 38500019 DC AL1(ERR014L-ERR006C-10) BRANCH TO DATA CHECK ROUTINE 38600019 DC X'05' TEST FOR OVERRUN 38700019 DC AL1(ERR016L-ERR006C-12) BRANCH TO OVERRUN ROUTINE 38800019 DC X'00' TEST FOR COMMAND REJECT 38900019 DC AL1(ERR007A-ERR006C-14) BRANCH TO COMMAND REJECT ROUTINE 39000019 DC X'0C' TEST FOR INVALID OPERATION 39100019 DC AL1(ERR007-ERR006C-16) BRANCH TO INVALID OPERATION RTN 39200019 DC X'2F' END OF LIST 39300019 DC AL1(ERR004BL-ERR006C-18) CONTINUE CHECKING FOR ERRORS 39400019 ERR012L B ERR012 GO TO EC ACTION 39500019 ERR015L B ERR015 GO TO BUS OUT ACTION 39600019 ERR014L B ERR014 GO TO DATA CHECK ACTION 39700019 ERR016L B ERR016 GO TO OVERRUN ACTION 39800019 ERR004BL B ERR004B CONTINUE ERROR CHECKING 39900019 ERR006D OI IOSFLA,IOSERR SET IOSERR ON @YM00636 40000002 B ERR007B GO WRITE TO OPERATOR 40100019 * EXIT TO WTO ROUTINE 40200019 ERR007 OI IOSFLB,IOSLOG SET LOGOUT FALG Y02967 40300002 NI EWAFLG2,X'FF'-EWAMDR SET FLAG BIT FOR OBR Y02967 40360002 ERR007A OI IOSFLB,IOSMSG SET MESSAGE FLAG Y02967 40420002 NI IOSFLA,X'FF'-IOSERR CLEAR IOSERR FLAG @YM00636 40500002 ERR007B LA ERRE1,WTORTN LOAD NAME OF WTO ROUTINE 40600019 B ERR005C GET OUT VIA XCTL 40700019 ERR008 NI IOSFLA,X'FF'-IOSERR CLEAR IOSERR FLAG @YM00636 40800002 LA WORKR5,EWCCNTRS POINT TO TEMPORARY ERROR Y02967 40900002 * COUNTERS @YM00636 41000002 LA WORKR6,EWACNTR1 POINT TO IOSB CNTRS @YM00636 41100002 BAL LINKR,ERR018 LINK TO COUNTER UPDATE ROUTINE 41200019 SVC ERRORSVC ISSUE ERROR EXCP 41300019 SVC RETSVC RETURN TO IOS VIA SVC 3 41400019 * UPDATE EWA ERROR COUNTERS ROUTINE Y02967 41500002 ERR018 SR WORKR4,WORKR4 ZERO OUT @YM00636 41600002 SR WORKR9,WORKR9 WORK REGISTERS @YM00636 41700002 IC WORKR4,DC(WORKR5) GET DATA @YM00636 41800002 IC WORKR9,DC(WORKR6) CHECK COUNTS @YM00636 41900002 AR WORKR4,WORKR9 ADD COUNTS @YM00636 42000002 STC WORKR4,DC(WORKR6) UPDATE DATA CHECK COUNT @YM00636 42100002 IC WORKR4,ILC(WORKR5) GET INCORRECT @YM00636 42200002 IC WORKR9,ILC(WORKR6) LENGTH COUNTS @YM00636 42300002 AR WORKR4,WORKR9 ADD COUNTS @YM00636 42400002 STC WORKR4,ILC(WORKR6) UPDATE INCORRECT LENGTH COUNT 42500002 IC WORKR4,EC(WORKR5) GET EQUIPMENT CHECK @YM00636 42600002 IC WORKR9,EC(WORKR6) CHECK COUNTS @YM00636 42700002 AR WORKR4,WORKR9 ADD COUNTS @YM00636 42800002 STC WORKR4,EC(WORKR6) UPDATE EQUIPMENT CHECK COUNT @YM00636 42900002 CLEAR1 XC 0(CLEARCNT,WORKR5),0(WORKR5) CLEAR ERROR CNTRS Y02967 43000002 TM IOSDVRID,IOSXCPID DRIVER ID EXCP @YM00636 43020002 BNO ERR018A NO,IOSB DOES NOT EXIST @YM00636 43040002 L WORKR4,IOSUSE LOAD ADDR OF RQE @YM00636 43060002 L WORKR4,IOB-1(WORKR4) LOAD ADDRESS OF IOB @YM00636 43080002 MVC IOSERRCT(4,WORKR4),0(WORKR6) MOVE ERROR COUNTERS Y02967 43100002 ERR018A BR LINKR RETURN @YM00636 43120002 * CHANNEL DATA CHECK ROUTINE @YM00636 43200002 ERR200 TM EWACNTR3,CDCCNT CHANNEL DATA CHECK @YM00636 43300002 BO ERR007 YES EXIT TO WTO ROUTINE 43400019 OI EWACNTR3,CDCCNT SET TO INDICATE RETRIED @YM00636 43500002 * RETRY ROUTINE 43600019 ERR009 SR WORKR3,WORKR3 CLEAR REGISTER @YM00636 43700002 XC IOSSNS(2),IOSSNS @ZA00415 43750003 IC WORKR3,0(CCWREG) GET OP CODE @YM00636 43770002 N WORKR3,CLEARHI CLEAR TOP FOUR BITS @YM00636 43840002 CLM WORKR3,1,RBTEST IS COMMAND READ BACKWARD @YM00636 43910002 BE ERR009B YES CLEAR INPUT AREA & RETRY 44000019 N WORKR3,BITS56 CLEAR BITS 5+6 @YM00636 44100002 CLM WORKR3,1,RFTEST IS COMMAND READ FORWORD @YM00636 44200002 BE ERR009B YES CLEAR INPUT AREA & RETRY 44300019 ERR009A OI IOSFLA,IOSERR SET IOSERR ON @YM00636 44400002 SVC ERRORSVC RETRY CCW 44500019 SVC RETSVC RETURN TO IOS VIA SVC 3 44600019 * CLEAR INPUT AREA 44700019 * THE REAL DATA ADDRESS IN THE CCW IS TRANSLATED TO A Y02967 44800002 * VIRTUAL ADDRESS. IF INDIRECT ADDRESSING IS SPECIFIED IN Y02967 44810002 * THE CCW,EACH ADDRESS IN THE IDA LIST IS TRANSLATED. Y02967 44820002 ERR009B LR WORKR4,IOSBREG SAVE IOSB REGISTER @YM00636 44830002 L RVREG,0(CCWREG) GET REAL INPUT AREA ADDR Y02967 44840002 N RVREG,MASK1 CLEAR OUT COMMAND CODE Y02967 44850002 LR SVREG,BASREG SAVE BASE REGISTER Y02967 44870002 L BASREG,VFCF120(COMREG) GET ADDR OF TRANSLATE RTN YM2511 44880002 BALR ERRETR,BASREG LINK TO TRANSLATE ROUTINE Y02967 44890002 LTR BASREG,BASREG ADDRESS TRANSLATED ? @ZA04474 44895003 LR BASREG,SVREG RESTORE BASE REGISTER Y02967 44900002 BZ ERR009B1 NO, DO NOT RETRY CCW @ZA04474 44901003 LR IOSBREG,WORKR4 RESTORE IOSB REGISTER @ZA04474 44902003 NI IOSFLA,X'FF'-IOSERR SET IOS ERROR FLAG OFF @ZA04474 44903003 SVC ERRORSVC RETRY CCW @ZA04474 44904003 SVC RETSVC RETURN TO IOS VIA SVC 3 @ZA04474 44905003 ERR009B1 EQU * @ZA04474 44906003 LR ERRE1,RVREG SAVE VIRTUAL ADDR OF IO LIST Y02967 44920002 LR VTLREG,RVREG SAVE VITUAL ADDR OF IO AREA Y02967 44930002 LR IOSBREG,WORKR4 RESTORE IOSB REGISTER @YM00636 44940002 LH WORKR6,BYTECNT(CCWREG) GET BYTE COUNT Y02967 44950002 TM CCWFLAG(CCWREG),IDA INDIRECT ADDRESSING SPECIFED Y02967 44960002 BZ ERR009H NO, IO ADDRESS CORRECT Y02967 44970002 * Y02967 44980002 * IDA IS SPECIFIED. TRANSLATE EACH ADDRESS IN LIST Y02967 44990002 * Y02967 45000002 ERR009C L RVREG,0(ERRE1) GET ADDRESS IN IDA LIST Y02967 45010002 LR SVREG,BASREG SAVE BASE REGISTER Y02967 45030002 L BASREG,VFCF120(COMREG) GET ADDR OF TRANSLATE RTN YM2511 45040002 BALR ERRETR,BASREG LINK TO TRANSLATE ROUTINE Y02967 45050002 LTR BASREG,BASREG ADDRESS TRANSLATED ? @ZA04474 45055003 LR BASREG,SVREG RESTORE BASE REGISTER Y02967 45060002 BZ ERR009C1 NO, DO NOT RETRY CCW @ZA04474 45061003 LR IOSBREG,WORKR4 RESTORE IOSB REGISTER @ZA04474 45062003 NI IOSFLA,X'FF'-IOSERR TURN OFF IOS ERROR FLAG @ZA04474 45063003 SVC ERRORSVC RETRY CCW @ZA04474 45064003 SVC RETSVC RETURN TO IOS VIA SVC 3 @ZA04474 45065003 ERR009C1 EQU * @ZA04474 45066003 LR VTLREG,RVREG SAVE ADDRESS OF IO AREA Y02967 45080002 ERR009D LR IOSBREG,WORKR4 RESTORE IOSB REGISTER @YM00636 45090002 * THE VIRTUAL ADDRESS IS DIVIDED BY THE PAGE SIZE(4096) THE Y02967 45100002 * REMAINDER IS USED TO DETERMINE HOW MANY BYTES CAN BE Y02967 45110002 * CLEARED IN THE NEXT EXECUTE INSTRUCTION. Y02967 45120002 LR WORKR4,VTLREG LOAD VITUAL ADDR OF IO ADRA Y02967 45130002 SRDA WORKR4,32(0) SHIFT INTO ODD REGISTER Y02967 45140002 D WORKR4,CON4096 DIVIDE ADDR BY PAGE SIZE Y02967 45150002 LA WORKR4,1(WORKR4) ADJUST REMAINDER Y02967 45160002 CLM WORKR3,1,RFTEST IS COMMAND READ FORWARD @YM00636 45170002 BE ERR009F YES, ADDRESS CORRECT Y02967 45180002 CR WORKR4,WORKR6 REMAINDER GE BYTE COUNT Y02967 45190002 BNL ERR009E YES, CLEAR ENTIRE IO AREA Y02967 45200002 SR WORKR6,WORKR4 SUBTRACT NO. OF BYTES IN PAGE Y02967 45210002 BCTR WORKR4,0 DECREMENT COUNT BY ONE Y02967 45220002 SR VTLREG,WORKR4 ADJUST IO ADDRESS Y02967 45230002 B ERR009G GO CLEAR INPUT AREA Y02967 45240002 ERR009E BCTR WORKR6,0 DECREMENT COUNT BY ONE Y00620 45250002 SR VTLREG,WORKR6 ADJUST IO ADDRESS Y00620 45260002 B ERR009I GO CLEAR INPUT AREA Y02967 45270002 ERR009F S WORKR4,CON4096 COMPUTE NO. OF Y02967 45280002 LPR WORKR4,WORKR4 BYTES LEFT IN PAGE Y02967 45290002 LA WORKR4,1(WORKR4) ADJUST NO. OF BYTES Y02967 45300002 CR WORKR4,WORKR6 REMAINDER GE BYTE COUNT Y02967 45310002 BNL ERR009H YES, CLEAR ENTIRE IO AREA Y02967 45320002 SR WORKR6,WORKR4 SUBTRACT NO. OF BYTES IN PAGE Y02967 45330002 BCTR WORKR4,0 DECREMENT COUNT BY ONE Y02967 45340002 ERR009G EX WORKR4,CLEAR CLEAR INPUT AREA Y02967 45350002 LA ERRE1,4(ERRE1) INCREMENT TO NEXT IO ADDRESS Y02967 45360002 LR WORKR4,IOSBREG SAVE IOSB REGISTER @YM00636 45370002 B ERR009C GO TRANSLATE NEXT ADDRESS Y02967 45380002 ERR009H BCTR WORKR6,0 DECREMENT COUNT BY ONE Y02967 45390002 CLM WORKR3,1,RFTEST IS COMMAND READ FORWARD @YM00636 45400002 BE ERR009I YES,IO ADDRESS OK Y02967 45410002 SR VTLREG,WORKR6 ADJUST IO ADDRESS Y02967 45420002 ERR009I EX WORKR6,CLEAR CLEAR INPUT AREA Y02967 45430002 B ERR009A RETRY BAD CCW Y02967 45440002 * CHANNEL CHECK ROUTINE 45800019 ERR010 LA WORKR5,EWAERPIB LOAD ADDRESS OF ERPIB Y02967 45900002 ERR010B XC 0(ERPIBLEN,WORKR5),0(WORKR5) CLEAR ERPIB @YM00636 46800002 B ERR007 GO TO LOGOUT ROUTINE 46900019 * CHAINING CHECK ROUTINE 47000019 ERR011 IC WORKR5,EWACNTR4 GET CHAINING CK COUNT @YM00636 47100002 LA WORKR5,1(WORKR5) INCREMENT COUNT @YM00636 47200002 STC WORKR5,EWACNTR4 UPDATE COUNT @YM00636 47300002 TM EWACNTR4,CCCNT IS COUNT FIVE @YM00636 47400002 BO ERR007 YES TO LOGOUT 47500019 B ERR009 NO RETRY 47600019 * EQUIPMENT CHECK 47700019 ERR012 IC WORKR5,EWACNTR3 GET EQUIPMENT CK COUNT @YM00636 47800002 LA WORKR5,1(WORKR5) INCREMENT COUNT @YM00636 47900002 STC WORKR5,EWACNTR3 UPDATE COUNTERS @YM00636 48000002 CLI EWACNTR3,EQCNT IS COUNT NOW TEN Y02967 48100002 BE ERR008 YES TO IOS A33936 48200001 B ERR009 NO RETRY 48300019 * UNIT EXCEPTION 48400019 ERR013 TM IOSFLA,IOSERR IOSERR ON-ENTERED AFTER RETRY @YM00636 48500002 BZ ERR005B NO EXIT TO STATISTICS UPDATE 48600019 ERR013A NI IOSFLA,X'FF'-IOSEX SET IOSEX OFF @YM00636 48700002 B ERR005B TO STATISTICS UPDATE ROUTINE 48800019 * DATA CHECK ROUTINE 49600019 ERR014 IC WORKR5,EWACNTR1 GET DATA CHECK ERROR COUNT Y02967 49700002 LA WORKR5,1(WORKR5) INCREMENT COUNT @YM00636 49800002 STC WORKR5,EWACNTR1 UPDATE DATA CHECK ERROR COUNT Y02967 49900002 TM EWACNTR1,DCCOUNT1 IS COUNT NOW THREE Y02967 50100002 BO ERR008 YES TO IOS A33926 50300020 B ERR009 NO RETRY 50400019 * BUSOUT CHECK 50500019 ERR015 TM EWACNTR4,BOCOUNT BUSOUT CHECK COUNT EQUAL ONE Y02967 50600002 BO ERR007 YES TO WTO ROUTINE 50700019 OI EWACNTR4,BOCOUNT SET COUNT TO ONE Y02967 50800002 B ERR009 RETRY 50900019 * OVERRUN 51000019 ERR016 IC WORKR5,EWACNTR4 GET OVERRUN ERROR COUNT @YM00636 51100002 LA WORKR5,INCCOUNT(WORKR5) INCREMENT COUNT @YM00636 51200002 STC WORKR5,EWACNTR4 UPDATE ERROR COUNT @YM00636 51300002 TM EWACNTR4,ORCOUNT DOES COUNT EQUAL FIVE Y02967 51400002 BO ERR007 YES EXIT TO WTO ROUTINE 51500019 B ERR009 NO RETRY 51600019 * INCORRECT LENGTH 51700019 ERR017 TM IOSFLA,IOSERR ENTERED AFTER RETRY @YM00636 51800002 BZ ERR017A NO 51900019 TM EWACNTR2,ZEROCNT FIRST TIME HERE Y02967 52000002 BC 5,ERR017A NO CONTINUE 52100019 NI IOSFLA,X'FF'-IOSEX CLEAR IOSEX @YM00636 52200002 B ERR008 EXIT TO IOS 52300019 ERR017A IC WORKR5,EWACNTR2 GET INCORRECT LENGTH COUNT Y02967 52400002 LA WORKR5,1(WORKR5) INCREMENT ERROR COUNT @YM00636 52500002 STC WORKR5,EWACNTR2 UPDATE COUNTERS Y02967 52600002 CLI EWACNTR2,ILCOUNT IS COUNT NOW FIVE Y02967 52700002 BE ERR008 YES EXIT TO IOS 52800019 B ERR009 NO RETRY 52900019 DS 0H FORCE HALF WORD ALIGNMENT 53000019 ERRON1 DC AL2(8) CONSTANT OF 8 53100019 MASKOUT DC X'267F' MASK FOR CLEARING UNWANTED @YM00636*53300002 SENSE DATA @YM00636 53310002 WKAREA DC XL3'00' CHECK FOR VALID CCW ADDR @YA00406 53360002 DS 0F Y02967 53400002 CON4096 DC X'00001000' PAGE SIZE Y02967 53405002 MASK1 DC X'00FFFFFF' MASK FOR HIGH ORDER BYTE Y02967 53410002 CLEARHI DC XL4'0F' CLEAR FOUR BITS OF BYTE Y02967 53415002 BITS56 DC XL4'03' CLEAR BITS 5 + 6 Y02967 53420002 RFTEST DC X'02' TEST FOR READ FORWARD COMMAND Y02967 53425002 RBTEST DC X'0C' TEST FOR READ BACKWARD COMMAND Y02967 53430002 CLEAR XC 0(0,VTLREG),0(VTLREG) CLEAR INPUT AREA Y02967 53435002 IECDIOSB Y02967 53440002 IECDERWA 53445002 *****************************************************************Y02967 53450002 * Y02967 53455002 * THIS DSECT DESCRIBES THE OPTICAL CHARACTER READER DEVICE Y02967 53460002 * DEPENDENT SECTION OF THE ERP WORKAREA Y02967 53465002 * Y02967 53470002 *****************************************************************Y02967 53475002 ORG EWAIERP Y02967 53480002 EWCSNS DS XL8 EIGHT BYTES OF SENSE DATA Y02967 53485002 EWCCNTRS DS XL4 FOUR BYTES OF ERROR COUNTERS Y02967 53490002 END IGE0011D 53500019