* /* START OF SPECIFICATIONS **** 00050002 *01* PROCESSOR=ASSEMXF-370R 00100002 **** END OF SPECIFICATIONS ***/ 00235602 IGE0011C CSECT 1287 OCR ERP ENTRY POINT 00241502 TITLE 'IGE0011C - 1287 OPTICAL CHARACTER READER ERP' 00247202 *********************************************************************** 00252902 *MODULE-NAME @YM00638 00254902 * IGE0011C @YM00638 00256902 * @YM00638 00257302 *DESCRIPTIVE-NAME @YM00638 00257702 * OCR ERP MODULE FOR 1287 DEVICE @YM00638 00258102 * @YM00638 00258502 *COPYRIGHT @YM00638 00259002 * NONE @YM00638 00259402 * @YM00638 00259802 *CHANGE-ACTIVITY @YM00638 00259902 * RELEASE 20 ADDITIONS/CHANGES/DELETIONS 00260002 *C510000,503000,506000,508000 A33926 00264302 *D357000 A33936 00270001 *C480000,537000 A33936 00280001 * 00285001 * RELEASE 21 ADDITIONS/CHANGES/DELETIONS 00290001 *A171500,173500,478100-478600,530100-530600 21797 00295001 *C377000-380000 A39680 00297001 * * 00300019 * RELEASE VS2/1.6 ADDITIONS/CHANGES/DELETIONS * 00330001 *A397000 * 00360001 * RELEASE VS2/ 2.0 ADDITIONS/CHANGES/DELETIONS Y02967 00362002 *A224000, Y02967 00364002 *A178000,260000,408000 YM2510 00364602 *A367000,538000 YM2518 00365202 *C046000,069000,073000,079000,096000-097000,148000,149000,160000 Y02967 00366002 *C258000-259000,263000-264000,268000,270000-274000,275000,278000 Y02967 00368002 *C285000-286000,288000-290000,292000-294000,307000-308000,311000 Y02967 00370002 *C329000,347000,349000,351000,353000,360000-362000,366000,368000 Y02967 00372002 *C370000,374000,401000-402000,407000-409000,413000,428000-429000 Y02967 00374002 *C431000,433000,435000-437000,439000-440000,446000-455000, Y02967 00376002 *C457000-465000,469000,471000-472000,476000,478000-478100,478300 Y02967 00378002 *C479000,487000,489000-491000,495000,497000-498000,502000,505000 Y02967 00380002 *C507000,511000,513000,516000,518000-519000,525000,528000 Y02967 00382002 *C530000-530100,530300,531000,538000, Y02967 00384002 *C431000,433000 YM2510 00384502 *C249000,428400,446800,448400,507000 YM2511 00385002 *C397000 YM2518 00385502 *D070000-071000,093000-095000,098000-103000,116000-122000, Y02967 00386002 *D131000-137000,205000-208000,296000-306000, 00388002 *D213000,413500 YM2510 00389002 * * 00390002 *TITLE 'IGE0011C' - 1287 ERROR RECOVERY PROCEDURES * 00400019 * * 00500019 *STATUS - RELEASE VS2/ 2.0 CHANGE LEVEL 000 Y02967 00600002 * * 00700019 *FUNCTION/OPERATION IGE0011C IS SCHEDULED FOR EXECUTION WHENEVER THE* 00800019 * I/O SUPERVISOR DETECTS AN ERROR ASSOCIATED WITH THE 1287 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; 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 * IGE0011C - ERROR RECOVERY PROCEDORE 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 * * 07200019 * 3) DYNAMIC WORK AREA Y02967 07300002 * * 07400019 * 4) STATISTICS UPDATE TABLE * 07500019 * * 07600019 *ATTRIBUTES * 07700019 * * 07800019 * RE-ENTRANT,SUPERVISOR MODE Y02967 07900002 * * 08000019 *NOTES * 08100019 * * 08200019 * N/A * 08300019 * * 08400019 * * 08500019 *********************************************************************** 08600019 EJECT @YA00406 08650002 *********************************************************************** 13000019 * * 13800019 * STATUS INDICATORS * 13900019 * * 14000019 *********************************************************************** 14100019 CSWUCK EQU X'02' UNIT CHECK 14200019 *********************************************************************** 14300019 * * 14400019 * REGISTER DEFINITION * 14500019 * * 14600019 *********************************************************************** 14700019 IOSBREG EQU 1 IOSB REG @YM00636 14800002 RVREG EQU 1 WORK REGISTER Y02967 14850002 CCWREG EQU 2 CCW ADDRESS REGISTER 14900019 WORKR3 EQU 3 WORK REGISTER @YM00636 14950002 ERREG EQU 4 WORK REGISTER 15000019 WORKR4 EQU 4 WORK REGISTER @YM00636 15100002 WORKR5 EQU 5 WORK REGISTER @YM00636 15200002 WORKR6 EQU 6 WORK REGISTER @YM00636 15500002 COMREG EQU 8 COMMUNICATION TABLE REG 15700019 WORKR9 EQU 9 WORK REGISTER @YM00636 15800002 SVREG EQU 9 WORK REGISTER 15900019 ERPREG EQU 10 DYNAMIC WORKAREA REG Y02967 16000002 VTLREG EQU 11 ADDR OF VIRTUAL I/O AREA Y02967 16050002 LINKR EQU 12 WORK REGISTER 16100019 ERRE1 EQU 13 WORK REGISTER 16300019 ERRETR EQU 14 RETURN REG 16400019 BASREG EQU 15 BASE REGISTER 16500019 *********************************************************************** 16600019 * * 16700019 * RETRY COUNTS * 16800019 * * 16900019 *********************************************************************** 17000019 ILCOUNT EQU 5 INCORRECT LENGTH RETRY COUNT @YM00636 17100002 ILCOUNT2 EQU 3 DOCUMENT INCORRECT LENGTH COUNT 21797 17150002 CCCNT EQU 5 TEST FOR CHAINING CHECK RETRISE 17200019 EQCNT EQU 10 TEST FOR EQUIPMENT CHECK RETRIES 17300002 EQCNT2 EQU 3 DOCUMENT EQUIPMENT CHECK COUNT 21797 17350002 DCCOUNT1 EQU 3 DOCUMENT DATA CHECK RETRY COUNT 17400002 DCCOUNT2 EQU 5 TAPE DATA CHECK COUNT @YM00636 17500002 INCCOUNT EQU 16 INCREMENT FOR OVERRUN RETRY COUNT 17600019 ORCOUNT EQU X'50' OVERRUN RETRY COUNT (FIVE) 17700019 BOCOUNT EQU X'08' TEST FOR BUS OUT CHECK RETRIED 17800019 CDCCNT EQU X'08' TEST FOR CHANNEL DATA CHK @YM00636 17850002 EJECT @YA00406 17860002 *********************************************************************** 17900019 * * 18000019 * MISCELLANEOUS DEFINITIONS * 18100019 * * 18200019 *********************************************************************** 18300019 VEXCTL EQU 44 ADDR OF XCTL ROUTINE 18400019 STAUPRTN EQU 254 STATISTICS UPDATE ROUTINE 18500019 BYTECNT EQU 6 DISPLACMENT TO BYTE COUNT IN CCW 18600019 CVTADDR EQU 16 POINTER TO CVT ADDRESS 18700019 NODOC EQU X'20' TEST FOR NO DOCUMENT FOUND 18800019 LATESS EQU X'40' TEST FOR LATE STACKER SELECT 18900019 KC EQU X'01' TEST FOR KEYBOARD CORRECTION 19000019 SNSLEN EQU 2 LENGTH OF SENSE BYTES TO PUT IN STATA 19100019 CHINTCHK EQU X'06' TEST FOR CHANNEL OR INTERFACE CHECK 19400019 CLRCNT EQU X'03' BYTE COUNT FOR CLEARING COUNTERS 19500019 OLC EQU X'40' TEST FOR ON-LINE CORRECTION 19900019 ZEROCNT EQU X'0F' TEST FOR FIRST RETRY, INC LENGTH 20000019 ERPIBLEN EQU 8 ERPIB LENGTH 20200019 DC EQU 0 DISPLACEMENT TO DATA CHECK COUNTS 21000019 ILC EQU 1 DISPLACEMENT TO INCORRECT LENGTH CNTS 21100019 EC EQU 2 DISPLACEMENT TO EQUIPMENT CHECK CNTS 21200019 RETSVC EQU 3 RETURN TO IOS SVC 21400019 ERRORSVC EQU 15 ERROR EXCP 21500019 CLEARCNT EQU X'02' COUNT OF ERROR COUNTER BYTES TO CLEAR 21600019 INVSNS1 EQU X'01' TEST FOR INVALID SENSE BIT 21700019 INVSNS EQU X'17' TEST FOR INVALID SENSE BITS 21800019 TM EQU X'80' TEST FOR TAPE MODE 21900019 VFCT68 EQU 68 INDEX TO INTERPRETER ROUTINE 22200019 WTORTN EQU 253 LOAD NAME TO WTO RTN. 22400019 VFCF120 EQU X'0120' DISPLACEMENT TO TRANSLATE RTN Y02967 22900002 CCWFLAG EQU 4 DISPLACEMENT TO CCW FLAG BYTE Y02967 23400002 IDA EQU X'04' TEST FOR INDIRECT ADDRESS Y02967 23900002 IOB EQU X'05' DISPLACEMENT TO IOB Y02967 24400002 IOSERRCT EQU X'1C' DISP TO IOSB ERROR CNT @YM00636 24900002 ADDRLN EQU 3 LENGTH OF 3 USED FOR COMPARE @YA00406 24910002 EJECT @YM00636 24950002 USING *,BASREG 25700019 USING EWA,ERPREG BASE FOR WORK AREA Y02967 25800002 USING IOSB,IOSBREG BASE REG FOR IOSB @YM00636 25850002 L ERPREG,IOSERP GET WORK AREA ADDRESS Y02967 25950002 L COMREG,CVTADDR GET CVT ADDRESS 26000019 OI IOSFLA,IOSEX SET EXCEPTION CONDITION ON @YM00636 26050002 TM IOSFLA,IOSERR ERP IN CONTROL @YM00636 26100002 BO ERR000 YES CONTINUE 26200019 * CLEAR IOB ERROR COUNTERS 26250019 XC EWACNTR1(CLRCNT),EWACNTR1 CLEAR COUNT Y02967 26300002 ERR000 CLI IOSCOD,IOSFINTC IS IT AN INTERCEPT CONDITION @YM00636 26400002 BE ERR0012 YES SEE IF CHANNEL ERROR 26500019 CLI IOSCOD,IOSERRC CHECK FOR X'41' IN ECB @YA00406 26550002 BNE ERR001A NO,CONTINUE @YA00406 26560002 CLC IOSCSWCA(ADDRLN),WKAREA IS CCW ADDRESS VALID? @YA00406 26570002 BE ERR007 NO, PERMANENT ERROR @YA00406 26580002 ERR001A TM IOSFLA,IOSACHN IS IT MIXED CHAINING @YA00406 26600002 BO ERR0012 YES SEE IF CHANNEL ERROR 26700019 TM IOSCC,IOSCC1 CODE EQUAL X'10' @YM00636 26800002 BZ ERR002 NO CONTINUE 26900019 L CCWREG,IOSVST LOAD VIRTUAL ADDR OF CHL PGM Y02967 27000002 B ERR003 CONTINUE Y02967 27200002 ERR0012 TM IOSTSB,CHINTCHK CHANNEL OR INTERFACE CHK @YM00636 27500002 BZ ERR007 NO EXIT TO WTO ROUTINE 27600019 B ERR010 YES TO CHANNEL+INTERFACE CHK RTN 27700019 ERR002 L CCWREG,IOSCSW-1 GET CCW ADDRESS Y02967 27800002 LA CCWREG,0(CCWREG) CLEAR HIGH ORDER BYTE 27900019 SH CCWREG,ERRON1 BACK UP ONE CCW 28000019 TM IOSFLA,IOSCCHN IS COMMAND CHAINING USED @YM00636 28100002 BZ ERR003 NO SET UP FOR WTO 28200019 TM IOSFLA,IOSERR ENTERED AFTER RETRY @YM00636 28300002 BZ ERR002A NO CONTINUE 28400019 LRA ERREG,0(CCWREG) LOAD REAL ADDR OF CCW Y02967 28500002 S ERREG,IOSRST SUBTRACT RESTART ADDRESS Y02967 28600002 BE ERR003 IF EQUAL ERROR 28700019 LA WORKR6,EWCCNTRS POINT TO TEMPORARY ERROR @YM00636 28800002 * COUNTERS @YM00636 28900002 LA WORKR5,EWACNTR1 POINT TO IOSB ERROR CNTRS @YM00636 29000002 BAL LINKR,ERR018 LINK TO COUNTER UPDATE ROUTINE 29100019 ERR002A LRA ERREG,0(CCWREG) LOAD REAL ADDR OF CHANNEL PGM Y02967 29200002 ST ERREG,IOSRST SAVE CCW START ADDRESS Y02967 29300002 ERR003 TM IOSTSA,CSWUCK IS IT UNIT CHECK @YM00636 29400002 BZ ERR004 NO DETERMINE ERROR TYPE 29500019 OC EWASTUP(SNSLEN),IOSSNS OR SENSE BITS Y02967 30700002 NC EWASTUP(SNSLEN),MASKOUT MASK UNWANTED BITS Y02967 30800002 ERR004 LR SVREG,BASREG SAVE BASE REGISTER 30900019 L BASREG,VFCT68(COMREG) GET INTERPRETER ROUTINE ADDRESS 31000019 ERR0041 BALR ERRETR,BASREG LINK TO INTERPRETER Y02967 31100002 DC X'1D' TEST FOR CHANNEL CONTROL CHECK 31200019 DC AL1(ERR010L-ERR0041-2) BRANCH TO CCC ACTION 31300019 DC X'1E' TEST FOR INTERFACE CONTROL CHECK 31400019 DC AL1(ERR010L-ERR0041-4) BRANCH TO ICC ACTION 31500019 DC X'1C' TEST FOR CHANNEL DATA CHECK 31600019 DC AL1(ERR200L-ERR0041-6) BRANCH TO CDC ACTION 31700019 DC X'12' CHECK FOR CONTROL UNIT END 31800019 DC AL1(ERR007L-ERR0041-8) BRANCH TO CUE ACTION 31900019 DC X'16' CHECK FOR UNIT CHECK 32000019 DC AL1(ERR006-ERR0041-10) BRANCH TO UNIT CHECK ACTION 32100019 DC X'2F' END OF LIST 32200019 DC AL1(ERR004B-ERR0041-12) PASS CONTROL TO ERR004B 32300019 ERR010L B ERR010 GO TO ERR010 32400019 ERR200L B ERR200 GO TO CDC ROUTINE 32500019 ERR007L B ERR007 EXIT TO WTO 32600019 ERR004B LR SVREG,BASREG SAVE BASE REGISTER 32700019 L BASREG,VFCT68(COMREG) GET INTERPRETER ROUTINE ADDRESS 32800019 ERR004B1 BALR ERRETR,BASREG LINK TO INTERPRETER Y02967 32900002 DC X'1F' TEST FOR CHAINING CHECK 33000019 DC AL1(ERR011L-ERR004B1-2) BRANCH TO CC ACTION 33100019 DC X'1A' TEST FOR PROGRAM CHECK 33200019 DC AL1(ERR007A-ERR004B1-4) BRANCH TO PC ACTION 33300019 DC X'1B' TEST FOR PROTECTION CHECK 33400019 DC AL1(ERR007A-ERR004B1-6) BRANCH TO PC ACTION 33500019 DC X'19' TEST FOR INCORRECT LENGTH 33600019 DC AL1(ERR017L-ERR004B1-8) BRANCH TO IL ACTION 33700019 DC X'17' CHECK FOR UNIT EXCEPTION 33800019 DC AL1(ERR013L-ERR004B1-10) BRANCH TO UE ACTION 33900019 DC X'2F' END OF LIST 34000019 DC AL1(ERR004B2-ERR004B1-12) PASS CONTROL TO ERR004BI 34100019 * FOLLOWING BRANCHS GO TO ROUTINES MORE THAN 128 BYTES AWAY 34150019 ERR011L B ERR011 GO TO CC ACTION 34200019 ERR017L B ERR017 GO TO IL ACTION 34300019 ERR013L B ERR013 GO TO UE-ACTION 34400019 ERR004B2 TM IOSTSA,CSWUCK IS UNIT CHECK POSTED @YM00636 34700002 BZ ERR005 NO TO STATISTICS UPDATE ROUTINE 34800019 ERR004E1 TM IOSSNS,KC IS KEY BOARD POSTED Y02967 34900002 BO ERR008 YES EXIT TO IOS 35000019 TM IOSSNS+1,LATESS IS LATE STACKER SELECT POSTED Y02967 35100002 BO ERR005B YES GO CLEAN UP 35200019 ERR004D TM IOSSNS+1,NODOC IS NO DOCUMENT POSTED Y02967 35300002 BO ERR005B YES CLEAN UP 35400019 ERR005 NI IOSFLA,X'FF'-IOSEX CLEAR IOB EXCPT, ERR CORRECT @YM00636 35500002 B ERR005B CONTINUE CLEAN UP 35600019 ERR005B NI IOSFLA,X'FF'-IOSERR CLEAR IOSERR @YM00636 35800002 LA ERRE1,STAUPRTN LOAD NAME OF STATISTICS UPDATE RTN 35900019 ERR005C LA WORKR5,EWCCNTRS POINT TO TEMPORARY ERROR @YM00636 36000002 * COUNTERS @YM00636 36100002 LA WORKR6,EWACNTR1 POINT TO IOSB ERROR COUNTERS Y02967 36200002 BAL LINKR,ERR018 LINK TO COUNTER UPDATE ROUTINE 36300019 L ERRETR,VEXCTL(COMREG) GET ADDRESS OF XCTL ROUTINE 36400019 BR ERRETR EXIT VIA XCTL 36500019 ERR006 TM IOSSNS+1,INVSNS ANY INVALID SENSE BITS ON Y02967 36600002 BC 5,ERR007 YES ALL DONE-CLEAN UP 36700019 CLC IOSSNS(2),ZERO UNIT CHECK NO SENSE @YM00636 36730002 BE ERR007 YES, LOGOUT AND MSG @YM00636 36760002 CLC IOSSNS(2),JTBITON UNIT CHECK TAPE SENSE @ZA00772 36770003 BE ERR007 YES SET PERMANENT ERROR @ZA00772 36780003 ERR0061 TM IOSSNS+1,TM IS IT TAPE MODE Y02967 36800002 BO ERR006B YES DETERMINE ERROR TYPE 36900019 ERR006A TM IOSSNS,INVSNS1 INVALID SENSE BITS ON Y02967 37000002 BO ERR007 YES GO CLEAN UP 37100019 ERR006B LR SVREG,BASREG SAVE BASE ADDRESS 37200019 L BASREG,VFCT68(COMREG) GET INTERPRETER ROUTINE ADDRESS 37300019 ERR006C BALR ERRETR,BASREG LINK TO INTERPRETER Y02967 37400002 DC X'03' TEST FOR EQUIPMENT CHECK 37500019 DC AL1(ERR012L-ERR006C-2) BRANCH TO EC ROUTINE @YM00636 37600002 DC X'06' TEST FOR NONRECOVERY @YM00634 37700002 DC AL1(ERR007-ERR006C-4) BRANCH TO NONREC ROUTINE @YM00634 37800002 DC X'01' TEST FOR INTERVENTION REQ'ED @YM00634 37900002 DC AL1(ERR006D-ERR006C-6) BRANCH TO IR ROUTINE @YM00634 38000002 DC X'02' TEST FOR BUS OUT CHECK 38100019 DC AL1(ERR015L-ERR006C-8) BRANCH TO BUS OUT CHECK ROUTINE 38200019 DC X'04' TEST FOR DATA CHECK 38300019 DC AL1(ERR014L-ERR006C-10) BRANCH TO DATA CHECK ROUTINE 38400019 DC X'05' TEST FOR OVERRUN 38500019 DC AL1(ERR016L-ERR006C-12) BRANCH TO OVERRUN ROUTINE 38600019 DC X'00' TEST FOR COMMAND REJECT 38700019 DC AL1(ERR007A-ERR006C-14) BRANCH TO COMMAND REJECT ROUTINE 38800019 DC X'0C' TEST FOR INVALID OPERATION 38900019 DC AL1(ERR007-ERR006C-16) BRANCH TO INVALID OPERATION RTN 39000019 DC X'2F' END OF LIST 39100019 DC AL1(ERR004BL-ERR006C-18) CONTINUE CHECKING FOR ERRORS 39200019 ERR012L B ERR012 GO TO EC ACTION 39300019 ERR015L B ERR015 GO TO BUS OUT ACTION 39400019 ERR014L B ERR014 GO TO DATA CHECK ACTION 39500019 ERR016L B ERR016 GO TO OVERRUN ACTION 39600019 ERR004BL B ERR004B2 CONTINUE CHECKING @YM00636 39700002 ERR006D OI IOSFLA,IOSERR SET IOSERR ON @YM00636 39800002 B ERR007B GO WRITE TO OPERATOR 39900019 * EXIT TO WTO ROUTINE 40000019 ERR007 OI IOSFLB,IOSLOG SET LOGOUT FALG Y02967 40100002 ERR007A OI IOSFLB,IOSMSG SET MESSAGE FLAG Y02967 40160002 NI EWAFLG2,X'FF'-EWAMDR SET FLAG BIT FOR OBR Y02967 40220002 NI IOSFLA,X'FF'-IOSERR CLEAR IOSERR FLAG @YM00636 40300002 ERR007B LA ERRE1,WTORTN LOAD NAME OF WTO ROUTINE 40400019 B ERR005C GET OUT VIA XCTL 40500019 ERR008 NI IOSFLA,X'FF'-IOSERR CLEAR IOSERR FLAG @YM00636 40600002 LA WORKR5,EWCCNTRS POINT TO TEMPORARY ERROR @YM00636 40700002 * COUNTERS @YM00636 40800002 LA WORKR6,EWACNTR1 POINT TO IOSB ERROR COUNT @YM00636 40900002 BAL LINKR,ERR018 LINK TO COUNTER UPDATE ROUTINE 41000019 SVC ERRORSVC ISSUE ERROR EXCP 41100019 SVC RETSVC RETURN TO IOS VIA SVC 3 41200019 * UPDATE EWA ERROR COUNTERS ROUTINE Y02967 41300002 ERR018 SR WORKR4,WORKR4 ZERO OUT @YM00636 41400002 SR WORKR9,WORKR9 WORK REGISTERS @YM00636 41500002 IC WORKR4,DC(WORKR5) GET DATA @YM00636 41600002 IC WORKR9,DC(WORKR6) CHECK COUNTS @YM00636 41700002 AR WORKR4,WORKR9 ADD COUNTS @YM00636 41800002 STC WORKR4,DC(WORKR6) UPDATE DATA CHECK COUNT @YM00636 41900002 IC WORKR4,ILC(WORKR5) GET INCORRECT @YM00636 42000002 IC WORKR9,ILC(WORKR6) LENGTH COUNTS @YM00636 42100002 AR WORKR4,WORKR9 ADD COUNTS @YM00636 42200002 STC WORKR4,ILC(WORKR6) UPDATE INCORRECT LENGTH COUNT 42300002 IC WORKR4,EC(WORKR5) GET EQUIPMENT CHECK @YM00636 42400002 IC WORKR9,EC(WORKR6) CHECK COUNTS @YM00636 42500002 AR WORKR4,WORKR9 ADD COUNTS @YM00636 42600002 STC WORKR4,EC(WORKR6) UPDATE EQUIPMENT CHECK COUNT @YM00636 42700002 CLEAR1 XC 0(CLEARCNT,WORKR5),0(WORKR5) CLEAR ERROR CNTRS Y02967 42800002 TM IOSDVRID,IOSXCPID DRIVER ID EXCP Y02967 42820002 BNO ERR018A NO,IOB DOES NOT EXIST YM2511 42840002 L WORKR4,IOSUSE LOAD ADDRESS OF RQE Y02967 42860002 L WORKR4,IOB-1(WORKR4) LOAD ADDRESS OF IOB Y02967 42880002 MVC IOSERRCT(4,WORKR4),0(WORKR6) MOVE ERROR COUNTERS Y02967 42900002 ERR018A BR LINKR RETURN Y02967 42920002 * CHANNEL DATA CHECK ROUTINE @YM00636 43000002 ERR200 TM EWACNTR3,CDCCNT CHANNEL DATA CHECK @YM00636 43100002 BO ERR007 YES EXIT TO WTO ROUTINE 43200019 OI EWACNTR3,CDCCNT SET TO INDICATE RETRIED @YM00636 43300002 * RETRY ROUTINE 43400019 ERR009 SR WORKR3,WORKR3 CLEAR REGISTER @YM00636 43500002 XC IOSSNS(2),IOSSNS @ZA00415 43550003 IC WORKR3,0(CCWREG) GET OP CODE @YM00636 43570002 N WORKR3,CLEARHI CLEAR TOP FOUR BITS @YM00636 43640002 CLM WORKR3,1,RBTEST IS COMMAND READ BACKWARD @YM00636 43710002 BE ERR009B YES CLEAR INPUT AREA & RETRY 43800019 N WORKR3,BITS56 CLEAR BITS 5+6 @YM00636 43900002 CLM WORKR3,1,RFTEST IS COMMAND READ FORWORD @YM00636 44000002 BE ERR009B YES CLEAR INPUT AREA & RETRY 44100019 ERR009A OI IOSFLA,IOSERR SET IOSERR ON @YM00636 44200002 SVC ERRORSVC RETRY CCW 44300019 SVC RETSVC RETURN TO IOS VIA SVC 3 44400019 * CLEAR INPUT AREA 44500019 * THE REAL DATA ADDRESS IN THE CCW IS TRANSLATED TO A Y02967 44600002 * VIRTUAL ADDRESS. IF INDIRECT ADDRESSING IS SPECIFIED IN Y02967 44610002 * THE CCW,EACH ADDRESS IN THE IDA LIST IS TRANSLATED. Y02967 44620002 ERR009B LR WORKR4,IOSBREG SAVE IOSB REGISTER @YM00636 44630002 L RVREG,0(CCWREG) GET REAL INPUT AREA ADDR Y02967 44640002 N RVREG,MASK1 CLEAR OUT COMMAND CODE Y02967 44650002 LA RVREG,1(RVREG) INCREMENT ADDR BY ONE Y02967 44660002 LR SVREG,BASREG SAVE BASE REGISTER Y02967 44670002 L BASREG,VFCF120(COMREG) GET ADDR OF TRANSLATE RTN YM2511 44680002 BALR ERRETR,BASREG LINK TO TRANSLATE ROUTINE Y02967 44690002 LR BASREG,SVREG RESTORE BASE REGISTER Y02967 44700002 BCTR RVREG,0 DECREMENT ADDR BY ONE Y02967 44710002 LR ERRE1,RVREG SAVE VITUAL ADDR OF IO LIST Y02967 44720002 LR VTLREG,RVREG SAVE VITUAL ADDR OF IO AREA Y02967 44730002 LR IOSBREG,WORKR4 RESTORE IOSB REGISTER @YM00636 44740002 LH WORKR6,BYTECNT(CCWREG) GET BYTE COUNT Y02967 44750002 TM CCWFLAG(CCWREG),IDA INDIRECT ADDRESSING SPECIFED Y02967 44760002 BZ ERR009H NO, IO ADDRESS CORRECT Y02967 44770002 * Y02967 44780002 * IDA IS SPECIFIED. TRANSLATE EACH ADDRESS IN LIST Y02967 44790002 * Y02967 44800002 ERR009C L RVREG,0(ERRE1) GET ADDRESS IN IDA LIST Y02967 44810002 LA RVREG,1(RVREG) INCREMENT ADDR BY ONE Y02967 44820002 LR SVREG,BASREG SAVE BASE REGISTER Y02967 44830002 L BASREG,VFCF120(COMREG) GET ADDR OF TRANSLATE RTN YM2511 44840002 BALR ERRETR,BASREG LINK TO TRANSLATE ROUTINE Y02967 44850002 LR BASREG,SVREG RESTORE BASE REGISTER Y02967 44860002 BCTR RVREG,0 DECREMENT ADDR BY ONE Y02967 44870002 LR VTLREG,RVREG SAVE ADDRESS OF IO AREA Y02967 44880002 ERR009D LR IOSBREG,WORKR4 RESTORE IOSB REGISTER @YM00636 44890002 * THE VIRTUAL ADDRESS IS DIVIDED BY THE PAGE SIZE(4096) THE Y02967 44900002 * REMAINDER IS USED TO DETERMINE HOW MANY BYTES CAN BE Y02967 44910002 * CLEARED IN THE NEXT EXECUTE INSTRUCTION. Y02967 44920002 LR WORKR4,VTLREG LOAD VITUAL ADDR OF IO ADRA Y02967 44930002 SRDA WORKR4,32(0) SHIFT INTO ODD REGISTER Y02967 44940002 D WORKR4,CON4096 DIVIDE ADDR BY PAGE SIZE Y02967 44950002 LA WORKR4,1(WORKR4) ADJUST REMAINDER Y02967 44960002 CLM WORKR3,1,RFTEST IS COMMAND READ FORWARD @YM00636 44970002 BE ERR009F YES, ADDRESS CORRECT Y02967 44980002 CR WORKR4,WORKR6 REMAINDER GE BYTE COUNT Y02967 44990002 BNL ERR009E YES, CLEAR ENTIRE IO AREA Y02967 45000002 SR WORKR6,WORKR4 SUBTRACT NO. OF BYTES IN PAGE Y02967 45010002 BCTR WORKR4,0 DECREMENT COUNT BY ONE Y02967 45020002 SR VTLREG,WORKR4 ADJUST IO ADDRESS Y02967 45030002 B ERR009G GO CLEAR INPUT AREA Y02967 45040002 ERR009E BCTR WORKR6,0 DECREMENT COUNT BY ONE Y00620 45050002 SR VTLREG,WORKR6 ADJUST IO ADDRESS Y00620 45060002 B ERR009I GO CLEAR INPUT AREA Y02967 45070002 ERR009F S WORKR4,CON4096 COMPUTE NO. OF Y02967 45080002 LPR WORKR4,WORKR4 BYTES LEFT IN PAGE Y02967 45090002 LA WORKR4,1(WORKR4) ADJUST NO. OF BYTES Y02967 45100002 CR WORKR4,WORKR6 REMAINDER GE BYTE COUNT Y02967 45110002 BNL ERR009H YES, CLEAR ENTIRE IO AREA Y02967 45120002 SR WORKR6,WORKR4 SUBTRACT NO. OF BYTES IN PAGE Y02967 45130002 BCTR WORKR4,0 DECREMENT COUNT BY ONE Y02967 45140002 ERR009G EX WORKR4,CLEAR CLEAR INPUT AREA Y02967 45150002 LA ERRE1,4(ERRE1) INCREMENT TO NEXT IO ADDRESS Y02967 45160002 LR WORKR4,IOSBREG SAVE IOSB REGISTER @YM00636 45170002 B ERR009C GO TRANSLATE NEXT ADDRESS Y02967 45180002 ERR009H BCTR WORKR6,0 DECREMENT COUNT BY ONE Y02967 45190002 CLM WORKR3,1,RFTEST IS COMMAND READ FORWARD @YM00636 45200002 BE ERR009I YES,IO ADDRESS OK Y02967 45210002 SR VTLREG,WORKR6 ADJUST IO ADDRESS Y02967 45220002 ERR009I EX WORKR6,CLEAR CLEAR OUT DATA AREA Y02967 45230002 B ERR009A RETRY BAD CCW Y02967 45240002 * CHANNEL CHECK ROUTINE 45600019 ERR010 LA WORKR5,EWAERPIB LOAD ADDR OF ERPIB Y02967 45700002 ERR010B XC 0(ERPIBLEN,WORKR5),0(WORKR5) CLEAR ERPIB @YM00636 46600002 B ERR007 GO TO LOGOUT ROUTINE 46700019 * CHAINING CHECK ROUTINE 46800019 ERR011 IC WORKR5,EWACNTR4 GET CHAINING CK COUNT @YM00636 46900002 LA WORKR5,1(WORKR5) INCREMENT COUNT @YM00636 47000002 STC WORKR5,EWACNTR4 UPDATE COUNT @YM00636 47100002 TM EWACNTR4,CCCNT IS COUNT FIVE @YM00636 47200002 BO ERR007 YES TO LOGOUT 47300019 B ERR009 NO RETRY 47400019 * EQUIPMENT CHECK 47500019 ERR012 IC WORKR5,EWACNTR3 GET EQUIPMENT CK COUNT @YM00636 47600002 LA WORKR5,1(WORKR5) INCREMENT COUNT @YM00636 47700002 STC WORKR5,EWACNTR3 UPDATE COUNTERS @YM00636 47800002 TM IOSSNS+1,TM IS IT TAPE MODE Y02967 47810002 BO ERR012B YES TEST FOR A FIVE COUNT @YM00636 47820002 CLI EWACNTR3,EQCNT2 IS COUNT NOW THREE Y02967 47830002 BE ERR008 YES EXIT TO IOS @YM00636 47840002 B ERR009 NO RETRY @YM00636 47850002 ERR012B EQU * 21797 47860001 CLI EWACNTR3,EQCNT IS COUNT NOW TEN Y02967 47900002 BE ERR008 YES TO IOS A33936 48000001 B ERR009 NO RETRY 48100019 * UNIT EXCEPTION 48200019 ERR013 TM IOSFLA,IOSERR IOSERR ON @YM00636*48300002 (ENTERED AFTER RETRY) @YM00636 48310002 BZ ERR013B NO CONTINUE 48400019 ERR013A NI IOSFLA,X'FF'-IOSEX SET IOBEX OFF @YM00636 48500002 B ERR005B TO STATISTICS UPDATE ROUTINE 48600019 ERR013B TM IOSCC,IOSCC1 SIO CONDITION 01 @YM00636 48700002 BO ERR005B YES TO STATISTICS UPDATE ROUTINE 48800019 SR WORKR3,WORKR3 CLEAR WORK REGISTER @YM00636 48900002 IC WORKR3,0(CCWREG) GET COMMAND CODE @YM00636 48970002 N WORKR3,BITS56 CLEAR BITS 5+6 @YM00636 49040002 CLM WORKR3,1,RFTEST IS COMMAND READ FORWARD @YM00636 49110002 BE ERR009B YES GO CLEAR INPUT AREA AND RETRY 49200019 B ERR005B NO TO STATISTICS UPDATE ROUTINE 49300019 * DATA CHECK ROUTINE 49400019 ERR014 IC WORKR5,EWACNTR1 GET DATA CHECK ERROR COUNT Y02967 49500002 LA WORKR5,1(WORKR5) INCREMENT COUNT @YM00636 49600002 STC WORKR5,EWACNTR1 UPDATE DATA CHECK ERROR COUNT Y02967 49700002 TM IOSSNS+1,TM IS IT TAPE MODE Y02967 49800002 BO ERR014B YES PROCESS TAPE 49900019 ERR014A TM 0(CCWREG),OLC IS IT ON-LINE CORRECTION 50000019 BO ERR008 YES TO IOS A33926 50100020 TM EWACNTR1,DCCOUNT1 IS COUNT NOW THREE Y02967 50200002 BO ERR008 YES TO IOS A33926 50300020 B ERR009 NO RETRY 50400019 ERR014B TM IOSSNS,KC IS IT KEYBOARD CORRECTION Y02967 50500002 BO ERR008 YES TO IOS A33926 50600020 TM EWACNTR1,DCCOUNT2 DATA CHECK COUNT EQUAL 5 @YM00636 50700002 BO ERR008 YES TO IOS A33926 50800020 B ERR009 NO RETRY 50900019 * BUSOUT CHECK 51000019 ERR015 TM EWACNTR4,BOCOUNT BUSOUT CHECK COUNT EQUAL ONE Y02967 51100002 BO ERR007 YES TO WTO ROUTINE 51200019 OI EWACNTR4,BOCOUNT SET COUNT TO ONE Y02967 51300002 B ERR009 RETRY 51400019 * OVERRUN 51500019 ERR016 IC WORKR5,EWACNTR4 GET OVERRUN ERROR COUNT @YM00636 51600002 LA WORKR5,INCCOUNT(WORKR5) INCREMENT COUNT @YM00636 51700002 STC WORKR5,EWACNTR4 UPDATE ERROR COUNT @YM00636 51800002 TM EWACNTR4,ORCOUNT DOES COUNT EQUAL FIVE Y02967 51900002 BO ERR007 YES EXIT TO WTO ROUTINE 52000019 B ERR009 NO RETRY 52100019 * INCORRECT LENGTH 52200019 ERR017 TM IOSFLA,IOSERR ENTERED AFTER RETRY @YM00636 52300002 BZ ERR017A NO 52400019 TM EWACNTR2,ZEROCNT FIRST TIME HERE Y02967 52500002 BC 5,ERR017A NO CONTINUE 52600019 NI IOSFLA,X'FF'-IOSEX CLEAR IOBEX @YM00636 52700002 B ERR008 EXIT TO IOS 52750019 ERR017A IC WORKR5,EWACNTR2 GET INCORRECT LENGTH COUNT Y02967 52800002 LA WORKR5,1(WORKR5) INCREMENT ERROR COUNT @YM00636 52900002 STC WORKR5,EWACNTR2 UPDATE COUNTERS Y02967 53000002 TM IOSSNS+1,TM IS IT TAPE MODE Y02967 53010002 BO ERR017B YES TEST FOR A FIVE COUNT @YM00636 53020002 CLI EWACNTR2,ILCOUNT2 IS COUNT NOW THREE Y02967 53030002 BE ERR008 YES EXIT TO IOS @YM00636 53040002 B ERR009 NO RETRY @YM00636 53050002 ERR017B EQU * 21797 53060001 CLI EWACNTR2,ILCOUNT IS COUNT NOW FIVE Y02967 53100002 BE ERR008 YES EXIT TO IOS 53200019 B ERR009 NO RETRY 53300019 DS 0H FORCE HALF WORD ALIGNMENT 53400019 ERRON1 DC AL2(8) CONSTANT OF 8 53500019 MASKOUT DC X'267F' MASK FOR CLEARING @YM00636 53700002 * UNWANTED SENSE DATA @YM00636 53750002 WKAREA DC XL2'00' CHECK FOR VALID CCW ADDR @YA00406 53760002 ZERO DC XL2'00' TEST FOR UC NO SENSE @YM00636 53800002 JTBITON DC XL2'0080' TEST FOR UC TAPE SENSE @ZA00772 53802003 DS 0F Y02967 53805002 MASK1 DC X'00FFFFFF' MASK FOR HIGH ORDER BYTE Y02967 53810002 CON4096 DC X'00001000' PAGE SIZE Y02967 53815002 CLEARHI DC XL4'0F' CLEAR FOUR BITS OF BYTE Y02967 53820002 BITS56 DC XL4'03' CLEAR BITS 5 + 6 Y02967 53825002 RFTEST DC X'02' TEST FOR READ FORWARD COMMAND Y02967 53830002 RBTEST DC X'0C' TEST FOR READ BACKWARD COMMAND Y02967 53835002 CLEAR XC 0(0,VTLREG),0(VTLREG) CLEAR INPUT AREA Y02967 53840002 IECDIOSB Y02967 53845002 IECDERWA 53850002 *****************************************************************Y02967 53855002 * Y02967 53860002 * THIS DSECT DESCRIBES THE OPTICAL CHARACTER READER DEVICE DEPEY02967 53865002 * SECTION OF THE ERP WORKAREA Y02967 53870002 * Y02967 53875002 *****************************************************************Y02967 53880002 ORG EWAIERP Y02967 53885002 EWCSNS DS XL8 EXTENDED SENSE BYTES Y02967 53890002 EWCCNTRS DS XL4 TEMPORARY ERROR COUNTERS Y02967 53895002 END IGE0011C 53900019