RSE TITLE 'DMKRSE (CP) VM/370 - RELEASE 6' 00001000
ISEQ 73,80 VALIDATE INPUT SERIALIZATION @V200820 00002000
*. 00003000
* 00004000
* MODULE NAME - 00005000
* 00006000
* DMKRSERR 00007000
* 00008000
* FUNCTION - 00009000
* 00010000
* TO RETRY AND ATTEMPT RECOVERY FOR REAL UNIT RECORD DEVICE 00011000
* IO ERRORS. 00012000
* ALSO TO RECORD HARDWARE ENVIRONMENTAL DATA FOR A 3800. 00012500
* 00013000
* ATTRIBUTES - 00014000
* 00015000
* REENTRANT, PAGEABLE, CALLED VIA SVC FROM DMKRSPER 00016000
* 00017000
* ENTRY POINTS - 00018000
* 00019000
* DMKRSERR - ENTRY POINT FOR REAL SPOOL ERROR 00020000
* DMKRSESD - COLLECT 3800 ENVIRONMENTAL SENSE DATA 00020500
* 00021000
* ENTRY CONDITIONS - 00022000
* 00023000
* GPR8 = ADDRESS OF THE RDEVBLOK FOR THE FAILING DEVICE 00024000
* GPR10 = ADDRESS OF THE IOBLOK 00025000
* GPR11 = ADDRESS OF USER VMBLOK 00026000
* GPR12 = DMKRSERR BASE ADDRESS 00027000
* GPR13 = ADDRESS OF STANDARD SAVEAREA 00028000
* 00029000
* EXIT CONDITIONS - 00030000
* 00031000
* THE IOBLOK IS RETURNED TO THE CALLER (DMKIOS) WITH, 00032000
* 1. THE RESTART FLAG SET, IN WHICH CASE THE OPERATION IS 00033000
* RESTARTED, STARTING AT THE ADDRESS IN IOBRCAW. 2. THE FATAL 00034000
* FLAG SET, INDICATING AN UNRECOVERABLE CONDITION. 3. RESTART, 00035000
* FATAL AND ERROR ROUTINE IN CONTROL FLAGS OFF, IN WHICH CASE 00036000
* THE IOBLOK IS RETURN TO THE ADDRESS IN IOBIRA VIA DMKIOS. 00037000
* 00038000
* CALLS TO OTHER ROUTINES - 00039000
* 00040000
* DMKMSWR - TO WRITE ERROR MESSAGES 00041000
* DMKFRET - TO RETURN STORAGE 00042000
* DMKIOEST - TO UPDATE STATISTICAL COUNTERS 00042100
* DMKIOESD - FORMAT 3800 HARDWARE ENVIRONMENTAL COUNTERS 00042250
* DMKERMSG - SEND MESSAGES TO THE OPERATOR 00042400
* DMKIOSQR - TO DO THE BUFFER UNLOAD FOR A 3800 00042550
* DMKIOESD - RECORD RESULTS OF BUFFER UNLOAD FOR FE 00042700
* DMKCVTBH - CONVERT ERROR MESSAGE DATA TO PRINTABLE HEX 00042850
* 00043000
* EXTERNAL REFERENCES - 00044000
* 00045000
* DMKRSP83 - 3811 CONTROL UNIT RESET CCW 00046000
* DMKRSPPR - ANCHOR FOR PRINTER FILE CHAIN 00046500
* 00047000
* TABLES /WORKAREAS - 00048000
* 00049000
* NONE 00050000
* 00051000
EJECT 00052000
* 00053000
* REGISTER USAGE - 00054000
* 00055000
* GPR1 = ADDRESS OF RESTART CAW 00056000
* GPR2,3,4 = WORK REGISTERS 00057000
* GPR5 = INTERNAL SUBROUTINE LINKAGE 00058000
* GPR7 = ADDRESS OF IOERBLOK 00059000
* GPR8 = ADDRESS OF RDEVBLOK 00060000
* GPR10 = ADDRESS OF IOBLOK 00061000
* GPR11 = ADDRESS OF VMBLOK 00062000
* GPR12 = DMKRSE MODULE BASE ADDRESS 00063000
* GPR13 = ADDRESS OF SAVEAREA 00064000
* 00065000
* NOTE - 00066000
* 00067000
* NONE - 00068000
* 00069000
* OPERATION - 00070000
* 00071000
* 1. FIRST ERROR ENTRY - THE ADDRESS OF THE IO ERROR BLOCK 00072000
* (IOERBLOK) IS LOCATED IN THE IOBLOK(IOBIOER). THE 00073000
* ADDRESS OF THE IOERBLOK IS MOVED TO THE RDEVBLOK 00074000
* (RDEVIOER) AND THE IOBIOER IS ZEROED. THE IOB RESTART 00075000
* COUNT IS UPDATED BY ONE, AT THIS POINT THE STATISTICAL 00076000
* DATA COUNTERS ARE UPDATED THEN THE IOERBLOK IS CHECKED 00076100
* FOR THE TYPE OF ERROR. 00076200
* THE STATISTICAL COUNTERS ARE UPDATED VIA A CALL TO 00076550
* DMKIOEST. FOR A 3800 PRINTER, A PARAMETER LIST WILL 00076900
* HAVE TO BE PASSED INDICATING WHICH COUNTERS TO UPDATE. 00077250
* FOR ALL OTHER SPOOLING DEVICES NO PARAMETER IS PASSED. 00077600
* 00078000
* 2. RETRY ERROR ENTRY - THE ADDRESS OF THE FIRST ERROR 00079000
* IOERBLOK IS LOCATED IN THE RDEVBLOK (RDEVIOER), AND 00080000
* IN THE IOBLOK (IOBIOER), IF AN ERROR, WILL BE 00081000
* THE ADDRESS OF THE NEW IOERBLOK. TWO TYES OF ENTRIES - 00082000
* 00083000
* (A) DEVICE END INTERRUPT FROM OPERATOR INTERVENTION, 00084000
* THE IOBLOK IS POSTED WITH THE RESTART FLAG AND 00085000
* ALLOW IOS TO RESTART THE OPERATION. 00086000
* (B) CHANNEL AND DEVICE END INTERRUPT FROM ERP 00087000
* INITIATED CCW'S TO OBTAINED OBR INFORMATION. 00088000
* 00089000
* 3. CONDITION CODE 3 ON SIO - MARK THE IOBLOK 00090000
* AS FATAL ERROR AND ALLOW IOS TO RETURN THE IOBLOK 00091000
* TO THE USER. 00092000
* 00093000
* 4. CHANNEL CONTROL AND INTERFACE CONTROL CHECK - 00094000
* TAKE APPROPIATE ACTION AS GROVEN BY THE TERMINATION 00095000
* AND/OR SEQUENCE CODE IN THE EXTENDED CHANNEL STATUS 00096000
* (ECSW). THE ACTION TAKEN IS DEVICE DEPENDENT AND IS AS 00097000
* FOLLOWS. 00098000
* 00099000
* CODE ACTION 00100000
* 00101000
* (0) NO RETRY - THE DEVICE IS UNABLE TO RECOVERY FROM THIS 00102000
* ERROR CONDITION. MARK THE ERROR AS FATAL AND 00103000
* ALLOW IOS TO RETURN THE IOBLOK TO THE USER. 00104000
* (4) RETRY ONCE - RETRY THE CCW AT WHICH THE ERROR 00105000
* ACCURRED. IF RETRY FAILS, POST THE ERROR AS 00106000
* FATAL AND ALLOW IOS TO RETURN THE IOBLOK TO THE 00107000
* USER. 00108000
* (8) IGNORE - TREAT THIS CONDITION AS COMPLETE WITHOUT 00109000
* ERROR. RESTART THE OPERATION WITH THE NEXT CCW. 00110000
* (12) RETRY WITH OPERATOR INTERVENTION - RETRY MAY BE 00111000
* POSSIBLE WITH OPERATOR INTERVENTION. GIVE CHANNEL 00112000
* ERROR ACTION MESSAGE AND RESTART THE OPERATION 00113000
* WHEN OPERATOR INTERVENTION IS COMPLETE. 00114000
* 00115000
* 5. CHANNEL DATA CHECK - RETRY THE OPERATION ONCE, 00116000
* IF RETRY FAILS, POST THE ERROR AS FATAL, AND 00117000
* ALLOW IOS TO RETURN THE IOBLOK TO THE USER. 00118000
* 6. UNITCHECK ERRORS - RECOVERY PROCEDURES FOR UNITCHECK 00119000
* ERRORS ARE DEVICE DEPENDENT, BUT GENERALLY SPEAKING, THE 00120000
* FOLLOWING ACTIONS ARE TAKEN.- 00121000
* (A) COMMAND REJECT - THE OPERATION IS MARK FATAL ERROR IN 00122000
* THE IOBLOK, ERROR MESSAGE DMKRSE500I IS ISSUED 00123000
* AND ALLOW IOS TO RETURN THE IOBLOK TO THE USER. 00124000
* 00125000
* (B) INTERVENTION REQUIRED - ONE OF TWO ACTIONS IS TAKEN, 00126000
* DEPENDENT ON THE DEVICE TYPE. 00127000
* (1) OPERATOR INTERVENTION - LOCATE THE RESTART CCW 00128000
* ADDRESS AND STORE IN IOBRCAW. CALL DMKMSWR 00129000
* TO GIVE ERROR MESSAGE DMKRSE501A (INT REQ), 00130000
* RETURN TO IOS WITH IOBERP SET, INDICATING 00131000
* DEVICE END INTERRUPT PENDING FROM DEVICE. 00132000
* 00133000
* WHEN DEVICE END INTERRUPT IS RECEIVED, THE 00134000
* OPERATION IS RESTARTED AT THE CCW ADDRESS 00135000
* LOCATED IN IOBRCAW. 00136000
* 00137000
* (2) FATAL ERROR - OPERATION FOR WHICH INTERVENTION 00138000
* REQUIRED IS FATAL, SUCH AS LOADBUF COMMAND, POST 00139000
* IOBLOK AS FATAL, GIVE ERROR MESSAGE DMKRSE501I 00140000
* (INT REQ) AND ALLOW IOS TO RETURN THE IOBLOK TO 00141000
* THE USER. 00142000
* 00143000
* 00144000
* (C) BUSOUT CHECK - THE OPERATION IS RETRYED ONCE, IF THE 00145000
* RETRY FAILS, GIVE ERROR MESSAGE DMKRSE502I, POST 00146000
* ERROR AS FATAL AND ALLOW IOS TO RETURN THE IOBLOK 00147000
* TO THE USER. 00148000
* 00149000
* (D) EQUIPMENT CHECK - ONE OF THREE ACTIONS WILL BE 00150000
* TAKEN. (DEVICE DEPENDENT) 00151000
* (1) EQUIPMENT CHECKS REQUIRING OPERATOR INTERVENTION, 00152000
* LOCATE THE RESTART CCW, STORE ITS ADDRESS 00153000
* IN IOBRCAW. GIVE ERROR MESSAGE DMKRSE503A (EQUIP 00154000
* CK), RETURN TO IOS WITH IOBERP FLAG SET, TO 00155000
* WAIT FOR DEVICE END INTERRUPT FROM THE 00156000
* DEVICE. WHEN DEVICE END INTERRUPT IS 00157000
* RECEIVED FROM OPERATOR INTERVENTION 00158000
* COMPLETE, INDICATE RESTART AND ALLOW 00159000
* TO RESTART THE OPERATION. 00160000
* (2) RETRY ONCE - EQUIPMENT CHECKS NOT REQUIRING 00161000
* OPERATOR INTERVENTION AND CAN BE RETRYED. 00162000
* LOCATE AND SET UP THE RESTART CCW ADDRESS 00163000
* FOR THE FAILING CCW, RETURN TO IOS TO 00164000
* RESTART THE OPERATION. IF RETRY FAILS, 00165000
* GIVE ERROR MESSAGE DMKRSE503I (EQUIP CK), 00166000
* POST THE ERROR AS FATAL AND RETURN THE 00167000
* IOBLOK TO THE USER VIA IOS. 00168000
* 00169000
* (3) FATAL EQUIPMENT CHECKS - EQUIPMENT CHECKS 00170000
* WHICH CAN NOT BE RETRYED OR NEED 00171000
* OPERATOR INTERVENTION, POST THE ERROR AS 00172000
* FATAL, GIVE ERROR MESSAGE DMKRSE503I AND 00173000
* ALLOW IOS TO RETURN THE IOBLOK TO THE USER. 00174000
* 00175000
* (E) DATA CHECKS - DEVICE DEPENDENT - DATA CHECKS 00176000
* REQUIRING OPERATOR INTERVENTION, SET UP 00177000
* RESTART CCW ADDRESS, GIVE MESSAGE DMKRSE504A, AND 00178000
* RETURN TO IOS TO WAIT FOR DEVICE END INTERRUPT. 00179000
* WHEN DEVICE END INTERRUPT IS RECEIVED FROM 00180000
* OPERATOR INTERVENTION COMPLETE, RETURN TO IOS 00181000
* ALLOW IOS TO RESTART THE OPERATION. 00182000
* 00183000
* DATA CHECKS NOT REQUIRING OPERATOR INTERVENTION, 00184000
* SET UP THE RESTART CCW ADDRESS, RETRY THE 00185000
* OPERATION, IF RETRY FAILS, POST THE ERROR AS 00186000
* FATAL, GIVE ERROR MESSAGE DMKRSE504I (DATA CK) 00187000
* AND ALLOW IOS TO RETURN THE IOBLOK TO THE USER. 00188000
* (F) BUFFER PARITY CHECK - LOCATE THE RESTART CCW 00189000
* ADDRESS, RETRY THE OPERATION ONCE, IF 00190000
* REQUIRED (DEVICE DEPENDENT), OTHERWISE POST 00191000
* ERROR AS FATAL, GIVE ERROR MESSAGE DMKRSE529I 00192000
* (PARITY CK) AND ALLOW IOS TO RETURN THE 00193000
* IOBLOK TO THE USER. 00194000
* 00195000
* (G) PROGRAM CONTROLLED INTERRUPT AND PROTECTION CHECKS 00196000
* POSTED AS FATAL ERROR, GIVE ERROR MESSAGE 00197000
* DMKRSE520I (CHAN ERROR) AND ALLOW IOS 00198000
* TO RETURN THE IOBLOK TO THE USER. 00199000
* 00200000
* (H) ERRORS NOT STATED OR EXCEPTION WILL BE GIVEN BY 00201000
* DEVICE TYPE. 00202000
* 00203000
* (I) 2501 READER - 00204000
* OVERRUN CHECK - LOCATE THE RESTART CCW ADDRESS, 00205000
* GIVE ERROR ACTION MESSAGE DMKRSE505A (OVERRUN 00206000
* CK), RETURN TO IOS TO WAIT FOR OPERATOR 00207000
* INTERVENTION. WHEN OPERATOR INTERVENTION IS 00208000
* COMPLETE, RETURN TO IOS TO RESTART THE DEVICE. 00209000
* 00210000
* (J) 1403-1443-3211-3203 PRINTERS 00211000
* CHANNEL 9 - LOCATE THE NEXT CCW ADDRESS 00212000
* AND RETURN TO IOS TO RESTART THE DEVICE. 00213000
* 00214000
* (K) 2520-2540 PUNCHES 00215000
* EQUIPMENT CHECKS - THE CCW ADDRESS IS LOCATED 00216000
* TO REPUNCH THE LAST TWO CARDS ON THE FIRST 00217000
* EQUIPMENT CHECK, RESTART THE OPERATION, IF RETRY 00218000
* FAILS, RETRY THE FAILING CCW, AFTER 20 00219000
* CONSECUTIVE RETRIES, POST ERROR AS FATAL, 00220000
* GIVE ERROR MESSAGE DMKRSE503I (EQUIP CK) AND ALLOW 00221000
* IOS TO RETURN THE IOBLOK TO THE USER. 00222000
* 00223000
* (L) 3505 READER 00224000
* FORMAT CHECK - THIS ERROR SHOULD NOT 00225000
* ACCURR SINCE SPOOLING DOES NOT USE OMR OR RCE, 00226000
* POST THE ERROR AS FATAL, GIVE ERROR MESSAGE 00227000
* DMKRSE525I (FORMAT CK), AND ALLOW IOS TO 00228000
* RETURN THE IOBLOK TO THE USER. 00229000
* 00230000
* (M) 3505 READER AND 3525 PUNCH - 00231000
* PERMANENT ERROR CHECK - THE OPERATOR HAS 00232000
* PRESSED THE PERMANENT ERROR KEY AND MAKE THE 00233000
* DEVICE READY. POST THE ERROR AS FATAL, 00234000
* GIVE ERROR MESSAGE DMKRSE508I (PERM CK), AND 00235000
* ALLOW IOS TO RETURN THE IOBLOK TO THE USER. 00236000
* 00237000
* (N) 3211 PRINTER 00238000
* CANCEL KEY - POST THE ERROR AS FATAL, GIVE 00239000
* ERROR MESSAGE DMKRSE503I (EQUIP CK), AND ALLOW 00240000
* IOS TO RETURN THE IOBLOK TO THE USER. 00241000
* 00242000
* OUTBOARD RECORDING DATA - THE STANDARD UNIT CHECK 00243000
* RECORD IS RECORDED ON THE IO ERROR RECORDING 00244000
* CYLINDER BY DMKIOE VIA DMKIOS. ADDITIONAL 00245000
* INFORMATION IS REQUIRED FOR CERTAIN ERROR 00246000
* CONDITIONS. 00247000
* 1. THE CONTENTS OF THE FCB BUFFER. 00248000
* 2. THE CONTENTS OF THE UCS BUFFER. 00249000
* 3. THE CHECK DATA FOR THE PRINT LINE BUFFER. 00250000
* 4. THE CONTENTS OF THE PRINT LINE BUFFER. 00251000
* 5. THE FIRST TEN CHARACTERS IN ERROR. 00252000
* THE INFORMATION IS OBTAINED AND STORED 00253000
* IN THE OBR3211 EXTENTION OF THE IOERBLOK. 00254000
* 00255000
* (O) 3203 PRINTER 00255150
* CANCEL KEY - NONE EXISTS ON THIS PRINTER. 00255300
* 00255450
* OUTBOARD RECORDING DATA - SAME AS 3211 00255600
* PRINTER (ABOVE) 00255750
* 00256000
* (P) 3800 PRINTING SUBSYSTEM 00256030
* CANCEL KEY - SAME AS FOR A 3211 00256060
* 00256090
* INTERVENTION REQD - ISSUE MESSAGE DMKRSE242I VIA 00256120
* CALL TO DMKERMSG. IF 'SYSTEM RESTART' IS 00256150
* ALSO INDICATED DO THAT FUNCTION AND THEN 00256180
* RETURN TO IOS WITH IOBERP SET. 00256210
* 00256240
* SYSTEM RESTART REQUIRED - THIS INDICATES THAT 00256270
* THE PAGE BUFFER HAS POSSIBLY BEEN DESTROYED. 00256300
* ISSUE MESSAGE DMKRSE255I SHOWING THE PAGE 00256330
* BACKUP COUNT AND HOLD AND REQUEUE EACH 00256360
* FILE ON THE DELAYED PURGE QUEUE ISSUING 00256390
* DMKRSE252I FOR EACH ONE SO REQUEUED 00256420
* 00256450
* EQUIPMENT CHECK (INTERNAL ERROR LOG FULL) - 00256480
* CALL DMKRSESD TO DO THE 'SENSE ERROR LOG' 00256510
* WHICH WILL CLEAR THE EQUIPMENT CHECK AND 00256540
* THEN RESTART THE CCW CHAIN. 00256570
* 00256600
* LOAD CHECK - IF IT IS AN FCB-FORMST MISMATCH, 00256630
* AND DMKTCS IS IN CONTROL, INDICATE THAT FACT 00256660
* BY PLACING 'FCBM' IN IOBMISC2. IF ANY OTHER 00256690
* CHECK INDICATING BAD LOAD MODULES, PLACE 00256720
* 'BADM' IN IOBMISC2. OTHERWISE IGNORE LD CHK. 00256750
* 00256780
* OUTBOARD RECORDING DATA - SAME AS 3211 00256810
* 00257000
* 00 - INTERFACE DISCONNECT 00258000
* 01 - STOP OR STACK OR NORMAL TERMINATION 00259000
* 10 - SELECTIVE RESET 00260000
* 11 - SYSTEM RESET 00261000
* 00262000
* 8. SEQUENCE CODE BITS 5,6 AND 7 OF BYTE 3 00263000
* 00264000
* 000 - A CHANNEL DETECTED ERROR ACCURRED DURING THE 00265000
* OF A TEST I/O INSTRUCTION. 00266000
* 00267000
* 001 - COMMAND OUT WITH A NON-ZERO COMMAND BYTE 00268000
* ON BUS OUT HAS BEEN SENT BY THE CHANNEL, 00269000
* BUT DEVICE STATUS HAS NOT YET BEEN ANALYZED 00270000
* BY THE CHANNEL. 00271000
* 00272000
* 010 - THE COMMAND HAS BEEN ACCEPTED BY THE DEVICE BUT NO 00273000
* DATA HAS BEEN TRANSFERRED. 00274000
* 00275000
* 011 - AT LEAST ONE BYTE OF DATA HAS BEEN TRANSFERRED 00276000
* OVER THE INTERFACE. 00277000
* 00278000
* 100 - THE COMMAND IN THE CURRENT CCW HAS EITHER NOT YET 00279000
* BEEN SENT TO THE DEVICE OR ELSE WAS SENT BUT NOT 00280000
* ACCEPTED BY THE DEVICE. 00281000
* 00282000
* 101 - THE COMMAND HAS BEEN ACCEPTED, BUT DATA TRANSFER IS 00283000
* UNPREDICTABLE. 00284000
* 00285000
* 110 - RESERVED. 00286000
* 00287000
* 111 - RESERVED. 00288000
* 00289000
* RESPONSE - 00290000
* 00291000
* NONE 00292000
* 00293000
* ERROR MESSAGES - 00294000
* 00295000
* DMKRSE242I PRT (CUU) INT REQD, STATUS CODE=(SENSEBYTE4) 00295200
* DMKRSE255I PRT (CUU) PAGE BUFFER DESTROYED, BACKUP 00295400
* PAGE COUNT = (COUNT) 00295600
* DMKRSE252I PRT (CUU) FILE (SPLID) REQUEUED AND HELD 00295800
* DMKRSE500I (TYPE) (CCU) CMD REJECT CMD=(CM) SNS=(SENSE) 00296000
* DMKRSE501A (TYPE) (CCU) INT REQ 00297000
* DMKRSE501I (TYPE) (CCU) INT REQ CMD=(CM) SNS=(SENSE) 00298000
* DMKRSE502I (TYPE) (CCU) BUSOUT CK CMD=(CM) SNS=(SENSE) 00299000
* DMKRSE503I (TYPE) (CCU) EQUIP CK CMD=(CM) SNS=(SENSE) 00300000
* DMKRSE503A (TYPE) (CCU) EQUIP CK CMD=(CM) SNS=(SENSE) 00301000
* DMKRSE504A (TYPE) (CCU) DATA CK CMD=(CM) SNS=(SENSE) 00302000
* DMKRSE504I (TYPE) (CCU) DATA CK CMD=(CM) SNS=(SENSE) 00303000
* DMKRSE505A (TYPE) (CCU) OVERRUN CK CMD=(CM) SNS=(SENSE) 00304000
* DMKRSE508I (TYPE) (CCU) PERM ERROR CMD=(CM) SNS=(SENSE) 00305000
* DMKRSE520I (TYPE) (CCU) CHAN ERROR CMD=(CM) SNS=(SENSE) 00306000
* DMKRSE520A (TYPE) (CCU) CHAN ERROR CMD=(CM) SNS=(SENSE) 00307000
* DMKRSE521I (TYPE) (CCU) NO DEVICE CMD=(CM) SNS=(SENSE) 00308000
* DMKRSE524I (TYPE) (CCU) LOAD-CHECK CMD=(CM) SNS=(SENSE) 00309000
* DMKRSE525I (TYPE) (CCU) FORMAT CK CMD=(CM) SNS=(SENSE) 00310000
* DMKRSE529I (TYPE) (CCU) PARITY CK CMD=(CM) SNS=(SENSE) 00311000
* 00312000
*. 00313000
EJECT 00314000
COPY OPTIONS 00315000
COPY LOCAL OPTIONS 00316000
EJECT 00317000
DMKRSE CSECT 00318000
SPACE 2 00319000
ID DC CL8'DMKRSE' MODULE NAME 00320000
SPACE 2 00321000
EXTRN DMKRSP83,DMKMSWR 00322000
EXTRN DMKIOEST STATISTICAL COUNTER UPDATE @VA03757 00322100
EXTRN DMKIOSQR @V60B9BA 00322200
EXTRN DMKIOESD @V60B9BA 00322300
EXTRN DMKERMSG @V60B9BA 00322400
EXTRN DMKCVTBH @V60B9BA 00322500
EXTRN DMKCVTBD @V60B9BA 00322600
EXTRN DMKRSPPR @V60B9BA 00322700
SPACE 3 00323000
USING PSA,R0 00324000
USING IOERBLOK,R7 00325000
USING RDEVBLOK,R8 00326000
USING IOBLOK,R10 00327000
USING VMBLOK,R11 00328000
USING SAVEAREA,R13 00329000
SPACE 3 00330000
DMKRSERR RELOC 00331000
SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @V4075A0 00331100
SPACE 00332000
SR R0,R0 .. 00333000
L R7,RDEVIOER SET BASE FOR IOERBLOK 00334000
LTR R7,R7 FIRST TIME FOR THIS ERROR ? 00335000
BZ FIRST YES -- IOERBLOK ON RDEVBLOK 00336000
BAL R5,UPDTCSW UPDATE IOERCSW 00337000
ICM R15,B'1111',IOBIOER DOES 2ND IOERBLOK EXIST ? @VA01254 00338000
BZ FIRST0 NO, GO TEST XOB FLAG @VA01254 00339000
TM IOERCSW+5-IOERBLOK(R15),IFCC+CCC+CDC IS CHANNEL @VA01254 00340000
* ERROR INDICATED ? 00341000
BNZ FIRSTDE YES, GO CHAIN IOERBLOK @VA01254 00342000
FIRST0 EQU * @VA01254 00343000
TM IOERFLG1,IOERXERP GETTING DATA FOR XOBR3211 @V386298 00343600
* OR XOBR3203 ?? 00344200
BO UNITCHK YES -- 00345000
TM IOERFLG1,IOERDEPD DEVICE END PENDING FOR THIS DEVICE 00346000
BZ FIRST NO -- TREAT AS FIRST ERROR 00347000
OI IOERFLG1,IOERDERD SET DEVICE END RECEIVED 00348000
FIRSTDE EQU * @VA01254 00349000
LTR R15,R15 DOES 2ND IOERBLOK EXIST ? @VA01254 00350000
BZ EXITDE NO - USE THIS DEVICE END 00351000
ST R15,RDEVIOER CHAIN NEW IOERBLOK FIRST 00352000
ST R7,0(R15) .. 00353000
LR R7,R15 ADDRESS OF NEW IOERBLOK 00354000
ST R0,IOBIOER CLEAR POINTER 00355000
BAL R5,UPDTCSW UPDATE IOERCSW 00356000
TM IOERCSW+5,IFCC+CCC+CDC IS CHANNEL ERROR @VA01254 00357000
* INDICATED ? 00358000
BNZ FATAL ERROR ON ERROR RECOVERY @VA01254 00359000
CLI RDEVTYPE,TYP3800 IS THIS A 3800 PRINTER? @VA11761 00359100
BNE TST3211 NO, GO SEE IF IT IS A 3211 @VA11761 00359110
TM IOERDATA,EQCHK POSSIBLE CANCEL KEY? @VA11761 00359120
BO ER3800A1 YES, TEST FOR CANCEL KEY @VA11761 00359130
TST3211 DS 0H @VA11761 00359140
CLI RDEVTYPE,TYP3211 3211 PRINTER ? @VA00701 00360000
BNE EXITDE NO -- BRANCH @VA00701 00361000
TM IOERDATA+1,X'02' CANCEL KEY ? (3211) @VA00701 00362000
BZ EXITDE NO -- BRANCH @VA00701 00363000
B FATAL ERROR ON ERROR RECOVERY @VA00701 00364000
SPACE 00365000
FIRST L R7,IOBIOER LOAD NEW IOERBLOK 00366000
LTR R7,R7 IS THERE ONE ?? 00367000
BZ FATAL1 NO -- FATAL ERROR 00368000
BAL R5,UPDTCSW UPDATE IOERCSW 00369000
CLC =C'LOADBUF',VMCOMND LOADBUF COMMAND ?? 00370000
BE FIRST1 YES -- RDEVSPL MISSING FOR COMMAND 00371000
ICM R9,B'1111',RDEVSPL ACTIVE FILE ?? 00372000
BZ EREXIT1 NO -- FORGET IT 00373000
FIRST1 LH R1,IOBRCNT UPDATE RESTART COUNT 00374000
LA R1,1(R1) BY ONE 00375000
STH R1,IOBRCNT AND STORE 00376000
L R1,RDEVIOER CHAIN NEW IOERBLOK TO 00377000
ST R7,RDEVIOER RDEVBLOK 00378000
ST R1,IOERPNT .. 00379000
LTR R1,R1 REALLY FIRST TIME ?? @VA03757 00379050
BNZ NOCALL NO, FORGET UPDATING SDR COUNTERS @VA03757 00379100
CLI RDEVTYPE,TYP3505 3505/3525 DEVICES ??? @VA03757 00379150
BE NOCALL YES, FORGET SDR @VA03757 00379200
NI IOERFLG3,X'FF'-IOERREAD RESET FLAG @VA03757 00379250
TM IOERDATA,X'08' DATA CHECK PRESENT ?? @VA03757 00379300
BZ SDRSTAT NO @VA03757 00379350
BAL R5,RDOPCK GO CHECK FOR READ FLAG @VA03757 00379400
SPACE 1 00379450
SDRSTAT EQU * @VA03757 00379500
SLR R1,R1 CLEAR PARAMETER REG @VA03757 00379550
CLI RDEVTYPE,TYP3800 IS IT A 3800 ? @V60B9BA 00379600
BNE NOPARM XFER IF NOT @V60B9BA 00379650
LA R0,PARMLEN LENGTH OF AREA IN DBLWDS @V60B9BA 00379700
CALL DMKFREE GET A STORAGE AREA @V60B9BA 00379750
MVC 0(L'PARM3800,R1),PARM3800 MOVE IN PROTOTYPE @V60B9BA 00379800
TM IOERCSW+5,CDC CHANNEL DATA CHECK @V60B9BA 00379850
BZ *+8 XFER IF NOT @V60B9BA 00379900
MVI 2(R1),X'2F' INCREMENT THIS COUNTER @V60B9BA 00379950
TM IOERCSW+5,CCC CHANNEL CONTROL CHECK ? @V60B9BA 00380000
BZ *+8 XFER IF NOT @V60B9BA 00380050
MVI 3(R1),X'2F' INCREMENT THIS COUNTER @V60B9BA 00380100
TM IOERCSW+5,IFCC INTERFACE CONTROL CHECK ? @V60B9BA 00380150
BZ *+8 XFER IF NOT @V60B9BA 00380200
MVI 4(R1),X'2F' INCREMENT COUNTER @V60B9BA 00380250
CLI IOERDATA+4,X'32' CFS MISFOLD ? @V60B9BA 00380300
BNE *+8 XFER IF NOT @V60B9BA 00380350
MVI 5(R1),X'2F' INCREMENT COUNTER @V60B9BA 00380400
CLI IOERDATA+4,X'42' BTS STACKER CHECK ? @V60B9BA 00380450
BNE *+8 XFER IF NOT @V60B9BA 00380500
MVI 6(R1),X'2F' INCREMENT COUNTER @V60B9BA 00380550
CLI IOERDATA+4,X'41' NO BURST CHECK ? @V60B9BA 00380600
BNE *+8 XFER IF NOT @V60B9BA 00380650
MVI 7(R1),X'2F' INCREMENT COUNTER @V60B9BA 00380700
SR R0,R0 ZERO OUT R0 @V60B9BA 00380750
NOPARM CALL DMKIOEST,AFFINITY @V60B9BA 00380800
LTR R1,R1 WAS A PARAMETER PASSED? @VA09395 00380810
BZ NOCALL XFER IF NOT @VA09395 00380818
LA R0,PARMLEN GET LENGTH TO FRET @VA09395 00380826
CALL DMKFRET FRET THE PARM AREA @VA09395 00380834
SR R0,R0 CLEAR REGISTER 0 @VA09395 00380842
NOCALL EQU * @VA03757 00380850
SPACE 1 00380900
ST R0,IOBIOER CLEAR IOERBLOK POINTER IN IOB 00380950
TM IOBSTAT,IOBCC3 WAS IT CONDITION CODE 3 ON SIO 00381000
BO FATAL1 YES -- FATAL ERROR 00382000
TM IOERCSW+5,IFCC+CCC INTERFACE OR CHANNEL CONTROL CHECK ? 00383000
BNZ CHANERR YES -- CHECK FOR TYPE OF RESTART 00384000
TM IOERCSW+5,CDC CHANNEL DATA CHECK ?? 00385000
BO RETRY1 YES -- RETRY ONCE 00386000
TM IOBCSW+5,CHC CHAINING CHECK ?? 00387000
BO RETRY1 YES - RETRY ONCE 00388000
TM IOBCSW+4,ATTN+CUE+SM TEST IMPOSSIBLE CONDITIONS 00389000
BNZ RETRY1 RETRY ONCE 00390000
SPACE 00391000
SPACE 00392000
TM RDEVFLAG,RDEVTERM+RDEVBACK+RDEVRSTR FLUSH - BACKSPACE 00393000
* OR BACKSPACE FILE ?? 00394000
BZ TESTUC NO -- CHECK FOR UNIT CHECK 00395000
CLC =C'SEP ',IOBMISC2 PRINTING OR PUNCHING SEPARATOR DATA 00396000
BE TESTTERM @VA10631 00397100
CLC =C'TCS ',IOBMISC2 SETTING UP A 3800 ? @V60B9BA 00397300
BNE EXITDE NO -- EXIT FOR IMM BACKSPAC @V60B9BA 00397600
TESTTERM DS 0H @VA10631 00397700
TM RDEVFLAG,RDEVTERM FLUSH REQUESTED ? 00398000
BO FATAL1 YES -- 00399000
TESTUC TM IOERCSW+4,UC UNIT CHECK ?? 00400000
BZ FATAL NO -- FATAL ERROR ALL OTHERS @VW01227 00401000
CLI IOERDATA,X'00' ANY SENSE INFORMATION ?? @VA00701 00402000
BE RETRY1 NO -- RETRY THE OPERATION ONCE @VA00701 00403000
SPACE 00404000
SPACE 2 00405000
UNITCHK EQU * HERE TO TEST SENSE INFORMATION ON UNIT CHECK 00406000
CLI RDEVTYPE,TYP3505 3525 PUNCH OR 3505 READER ?? 00407000
BE ERR35XX YES -- 00408000
TM RDEVTYPC,CLASURO OUTPUT DEVICE ?? 00409000
BO TSTURO YES -- 00410000
* 00411000
* ERROR RECOVERY FOR 2540 AND 2501 READERS 00412000
* 00413000
TM IOERDATA,EQCHK EQUIPMENT CHECK ?? 00414000
BO DELAY2 YES -- OPERATOR INTERVENTION 00415000
* REQUIRED 00416000
TM IOERDATA,INTREQ INTERVENTION REQUIRED ??? 00417000
BO DELAY YES -- WAIT FOR IT 00418000
TM IOERDATA,BUSOUT BUSOUT CHECK ??? 00419000
BO RETRY1 YES -- RETRY ONCE 00420000
TM IOERDATA,DATACHK+4 DATA CHECK ?? OVERRUN ?? 00421000
BNZ DELAY2 YES -- OPERATOR INTERVENTION 00422000
B FATAL1 ALL OTHERS FATAL ERROR 00423000
SPACE 00424000
SPACE 00425000
TSTURO EQU * OUTPUT DEVICES 00426000
TM RDEVTYPE,TYP3211 IS IT A 3203/3211 PRINTER?? @V386298 00426700
BO ERR3211 YES--BRANCH INTO EXISTING @V386298 00427400
* 3211 ERROR LOGIC 00428100
CLI RDEVTYPE,TYP3800 IS IT A 3800 PRINTER ? @V60B9BA 00428400
BE ERR3800 XFER IF SO @V60B9BA 00428700
SPACE 00429000
TM IOERDATA,INTREQ+EQCHK INTERVENTION AND @VA00701 00430000
* EQUIPMENT CK 00431000
BNO TESTTYPE NO -- CHECK FOR PUNCH OR PRINTER @VA00701 00432000
TM IOBSTAT,IOBCC1 STATUS STORED ON INITIAL @VA00701 00433000
* SELECTION 00434000
BO DELAY2 YES -- FOR OPERATOR ACTION @VA00701 00435000
TESTTYPE TM RDEVTYPE,TYPPUN 2540P ?? PUNCH @VA00701 00436000
BO TSTPUN YES - 00437000
* 00438000
* 1403 AND 1443 PRINTER ERROR ROUTINE 00439000
* 00440000
TM IOERDATA,EQCHK EQUIPMENT CHECK ?? 00441000
BO RETRY1 YES -- RETRY ONCE 00442000
CLI RDEVTYPE,TYP1443 1443 PRINTER 00443000
BE TSTPRTNR YES -- GO TEST FOR INTERVENTION 00444000
TM IOERDATA,4 UCS GEN STOR PARITY ERROR ?? (1403) 00445000
BO FATAL YES -- FATAL ERROR 00446000
TSTPRTNR TM IOERDATA,INTREQ INTERVENTION REQUIRED ?? 00447000
BO DELAY YES -- WAIT FOR IT 00448000
TM IOERDATA,BUSOUT BUSOUT CHECK ?? 00449000
BO RETRY1 YES -- RETRY ONCE 00450000
TM IOERDATA,1 CHANNEL 9 ??? 00451000
BO IGNORE YES -- IGNORE 00452000
CLI RDEVTYPE,TYP1443 1443 PRINTER ?? 00453000
BE FATAL1 YES -- FATAL ERROR 00454000
TM IOERDATA,DATACHK DATA CHECK ??? (1403) 00455000
BO NXTDELAY YES -- GET NEXT CCW 00456000
B FATAL1 FATAL ERROR ALL OTHERS 00457000
SPACE 00458000
TSTPUN EQU * HERE FOR 2540 AND 2520 PUNCH 00459000
TM IOERDATA,EQCHK EQUIPMENT CHECK ??? 00460000
BZ TSTPUNNR NO -- 00461000
BAL R5,GETRCAW GET RESTART CAW 00462000
CLI IOBRCNT,X'14' 20 CONTINOUS ERRORS ??? 00463000
BH FATAL YES -- 00464000
B RETRY RETRY THE OPERATION 00465000
TSTPUNNR TM IOERDATA,INTREQ INTERVENTION REQUIRED ?? 00466000
BO DELAY YES -- WAIT FOR IT 00467000
TM IOERDATA,BUSOUT BUSOUT CHECK ??? 00468000
BO RETRY1 YES -- RETRY ONCE 00469000
B FATAL1 COMMAND REJECT AND ALL OTHERS 00470000
SPACE 00471000
SPACE 3 00472000
NXTDELAY EQU * HERE TO GET NEXT CCW AND OPERATOR 00473000
* INTERVENTION 00474000
CLC =C'SEP ',IOBMISC2 SEPARATOR ROUTINE ? 00475000
BE FATAL YES - FATAL ERROR CONDITION 00476000
CLC =C'TCS ',IOBMISC2 3800 SETUP ROUTINE ? @V60B9BA 00476300
BE FATAL YES - FATAL ERROR @V60B9BA 00476600
BAL R5,IGNORE1 GET NEXT CCW 00477000
B DELAY3 AND GIVE INTERVENTION MESSAGE 00478000
SPACE 2 00479000
DELAY EQU * HERE TO SET UP FOR DE FROM DEVICE AFTER OPERATOR 00480000
* HAS READIED IT FOLLOWING AN ERROR 00481000
OI IOERFLG1,IOERPEND INDICATE DEVICE END AND SHORT 00482000
* MESSAGE 00483000
OI IOERFLG2,IOERCEMD DO NOT RECORD ERROR 00484000
DELAY2 BAL R5,GETRCAW GET RESTART CAW 00485000
DELAY3 TM VMOSTAT,VMCF CONSOLE FUNCTION ? @VW01227 00486000
BZ DELAY4 NO -- @VW01227 00487000
CLC =C'LOADBUF',VMCOMND LOADBUFF COMMAND ? @VW01227 00488000
BE FATAL YES - DON'T HANG USER @VW01227 00489000
DELAY4 CLI IOBRCNT,X'14' 20 CONTINOUS ERRORS ? @VW01227 00490000
BH FATAL YES -- FATAL ERROR 00491000
ST R1,IOBRCAW SET UP RESTART CCW 00492000
OI IOERFLG1,IOERDEPD SET DEVICE END PENDING 00493000
MVI IOERIND3,IOERACT INDICATE OPERATOR ACTION 00494000
CLI RDEVTYPE,TYP3800 IS IT A 3800 PRINTER ? @V60B9BA 00494300
BNE DELAY4A XFER IF NOT (PRINT MSG) @VA09266 00494500
TM SAVEWRK1,X'80' 3800 MSG PRINTED? @VA09266 00494700
BO DELAY4B XFER IF SO @VA09266 00494900
DELAY4A BAL R5,MSGERR INFORM OPERATOR @VA09266 00495100
DELAY4B TM IOERFLG1,IOERDERD DEVICE END RECEIVED ?? @VA09266 00495300
BO EXITDE YES -- WHILE PRINTING MSG @VA00701 00497000
NI IOBFLAG,X'FF'-IOBRSTRT RESET RESTART FLAG 00498000
NI IOBSTAT,X'FF'-IOBFATAL RESET FATAL FLAG 00499000
OI RDEVSTAT,RDEVNRDY INDICATE INTERVENTION REQUIRED 00500000
B EREXIT EXIT 00501000
SPACE 3 00502000
IGNORE1 EQU * HERE TO GET NEXT CCW 00503000
SR R1,R1 CLEAR CCW ADDRESS REG 00504000
ICM R1,B'0111',IOERCSW+1 POINT TO NEXT CCW 00505000
CLI 0(R1),X'08' IS IT A TIC ?? 00506000
BNE *+8 NO - USE THIS CCW 00507000
ICM R1,B'0111',1(R1) GET TRANSFER ADDRESS 00508000
BZ FATAL1 RESTART ADDRESS INVALID @VA00701 00509000
ST R1,IOBRCAW STORE RESTART CAW 00510000
BR R5 RETURN TO CALLER 00511000
SPACE 00512000
IGNORE EQU * HERE TO IGNORE THE ERROR 00513000
OI IOERFLG2,IOERCEMD DO NOT RECORD IOERBLOK 00514000
IGNORE2 BAL R5,IGNORE1 GET NEXT CCW 00515000
EXITDE NI IOBFLAG,X'FF'-(IOBERP+IOBRSTRT) RESET FLAGS 00516000
NI RDEVSTAT,X'FF'-RDEVNRDY RESET INTERVENTION REQUIRED FLAG 00517000
NI IOERFLG1,X'FF'-IOERPEND RESET PENDING FLAG 00518000
CLC =C'SEP ',IOBMISC2 PRINTING SEPARATOR PAGE 00519000
BE RETRYDE YES -- DO NOT FLUSH OR BACKSPACE 00520000
CLC =C'TCS ',IOBMISC2 SETTING UP THE 3800 PRINTER @V60B9BA 00520300
BE RETRYDE YES - DON'T FLSH OR BACKSPAC@V60B9BA 00520600
TM RDEVFLAG,RDEVTERM+RDEVBACK+RDEVRSTR FLUSH OR BACKSPACE 00521000
BZ RETRYDE NO -- 00522000
OI IOBCSW+4,CE FORCE CHANNEL END FOR DMKRSP 00523000
MVC IOBCSW(4),IOBRCAW SET CSW FOR DMKRSP BACKSPACE 00524000
OI IOERFLG2,IOERCEMD DO NOT RECORD IOERBLOK 00525000
B EREXIT1 00526000
SPACE 3 00527000
RETRY1 EQU * HERE TO DO IMMEDIATE RETRY 00528000
BAL R5,GETRCAW GO CALCULATE RESTART CAW 00529000
CLI IOBRCNT,X'01' RETRYED ONCE ?? 00530000
BH FATAL YES -- FATAL ERROR 00531000
RETRY ST R1,IOBRCAW PUT RESTART CAW IN IOBLOK 00532000
RETRYDE OI IOBFLAG,IOBRSTRT REQUEST RESTART 00533000
NI IOBFLAG,X'FF'-IOBERP RESET ERP INCONTROL 00534000
B EREXIT2 AND EXIT TO IOS 00535000
SPACE 2 00536000
FATAL1 LTR R7,R7 IOERBLOK PRESENT ?? @VA00701 00537000
BZ *+8 NO - @VA00701 00538000
OI IOERFLG2,IOERCEMD DO NOT RECORD THIS ERROR @VA00701 00539000
SPACE 00540000
FATAL EQU * HERE TO INDICATE FATAL ERROR TO IOSUPP 00541000
OI IOBSTAT,IOBFATAL SET FATAL FLAG 00542000
NI RDEVSTAT,X'FF'-RDEVNRDY RESET NOT READY FLAG 00543000
LTR R7,R7 IOERBLOK PRESENT ?? 00544000
BZ EREXIT1 NO - FORGET MESSAGE 00545000
NI IOERFLG1,X'FF'-IOERPEND FORCE LONG MESSAGE FORMAT 00546000
MVI IOERIND3,IOERINFO ACTION CODE OF I 00547000
BAL R5,MSGERR NOTIFY OPERATOR 00548000
EREXIT1 EQU * 00549000
NI IOBFLAG,X'FF'-(IOBRSTRT+IOBERP) RESET FLAGS 00550000
CLI RDEVTYPE,TYP3211 3211 PRINTER ?? 00551000
BNE EREXIT2 NO -- 00552000
TM IOBSTAT,IOBFATAL FATAL I/O ERROR ?? 00553000
BZ EREXIT2 NO -- 00554000
LTR R7,R7 IOERBLOK PRESENT ?? 00555000
BZ EREXIT2 NO - EXIT 00556000
TM IOERCSW+5,IFCC+CCC+CDC IS CHANNEL ERROR @VA01254 00557000
* INDICATED ? 00558000
BNZ EREXIT2 YES, GO EXIT @VA01254 00559000
TM IOERDATA+1,X'80' COMMAND RETRY ?? 00560000
BZ EREXIT2 NO -- 00561000
CLI RDEVTYPE,TYP3203 IS IT A 3203 PRINTER ?? @V386298 00561300
BE EREXIT2 YES--DON'T DO A RESET @V386298 00561600
L R1,=A(DMKRSP83) ADDRESS OF 3211 CONTROL UNIT 00562000
ST R1,IOBRCAW RESET CCW AND STORE IN RESTART CAW 00563000
OI IOBFLAG,IOBRSTRT INDICATE RESTART 00564000
EREXIT2 MVI IOBRCNT+1,X'00' RESET COUNT TO ZERO 00565000
SPACE 3 00566000
EREXIT EQU * EXIT FROM RSERR 00567000
ICM R1,B'1111',IOBIOER ADDRESS OF IOERBLOK 00568000
BZ EXIT NO -- 00569000
TM IOERCSW+5-IOERBLOK(R1),IFCC+CCC+CDC IS CHANNEL @VA01254 00570000
* ERROR INDICATED ? 00571000
BZ CKEND NO, GO FRET IOERBLOK @VA01254 00572000
LR R3,R1 SAVE IOERBLOK POINTER @VA01254 00573000
L R1,IOERCCRA-IOERBLOK(R3) CHANNEL REC ADDR @V508690 00574500
L R0,IOERCCRL-IOERBLOK(R3) CHANNEL REC LENGTH @V508690 00575500
CALL DMKFRET RELEASE STORAGE @VA01254 00578000
LR R1,R3 GET IOERBLOK POINTER @VA01254 00579000
CKEND EQU * @VA01254 00580000
LA R0,IOERSIZE SIZE OF BLOK 00581000
AH R0,IOEREXT-IOERBLOK(,R1) ADD LENGTH OF EXTENSION 00582000
CALL DMKFRET FRET IOERBLOK 00583000
XC IOBIOER(4),IOBIOER CLEAR POINTER IN IOBLOK 00584000
EXIT EQU * 00585000
LTR R7,R7 IOERBLOK PRESENT ?? 00586000
BZ *+8 NO - 00587000
NI IOERFLG1,X'FF'-IOERERP RESET DMKRSERR IN CONTROL 00588000
SVC 16 RETURN TO CALLER'S CALLER (DMKIOS) 00589000
EXIT 00590000
EJECT 00590050
RDOPCK EQU * @VA03757 00590100
TM RDEVTYPC,CLASURI INPUT DEVICE ?? @VA03757 00590150
BZR R5 NO, RETURN TO IN LINE CODE @VA03757 00590200
L R1,IOERCSW GET FAILING CCW PLUS 8 @VA03757 00590250
LA R1,0(,R1) CLEAR HI-ORDER BYTE @VA03757 00590300
S R1,F8 GET FAILING CCW ADDRESS @VA03757 00590350
BM NOTREAD NO CCW @VA03757 00590400
TM 0(R1),X'01' CONTROL OP @VA03757 00590450
BO NOTREAD YES @VA03757 00590500
OI IOERFLG3,IOERREAD MUST BE READ OP @VA03757 00590550
NOTREAD EQU * @VA03757 00590600
BR R5 RETURN TO IN LINE CODE @VA03757 00590650
SPACE 2 00590700
SPACE 3 00591000
GETRCAW EQU * HERE TO CALCULATE RESTART CAW 00592000
IC R0,IOBRCNT GET ERROR RETRY COUNT 00593000
AL R0,F1 UPDATE BY ONE 00594000
STC R0,IOBRCNT AND STORE 00595000
L R1,IOBCAW POINT TO 1ST CCW IN BUFFER 00596000
TM IOBFLAG,IOBRSTRT IS THIS A RESTART CONDITION ?? 00597000
BZ *+8 NO - IOBRCAW NOT VALID 00598000
L R1,IOBRCAW YES - USE RESTART CAW 00599000
LTR R1,R1 VALID RESTART CAW ? @VA00701 00600000
BZ FATAL1 NO - FATAL ERROR @VA00701 00601000
TM IOBSTAT,IOBCC1 STATUS STORED ON INITIAL SELECTION? 00602000
BCR 1,R5 YES -- RESTART AT 1ST CCW 00603000
L R1,IOERCSW GET ADDRESS OF LAST USED CCW+8 00604000
LA R1,0(R1) CLEAR HIGH BYTE 00605000
LTR R1,R1 CCW ADDRESS PRESENT 00606000
BNZ CSWOK YES -- OK 00607000
ICM R1,B'1111',IOBRCAW NO - USE RESTART CAW @VA00701 00608000
BZ FATAL1 INVALID IOBRCAW ADDRESS @VA00701 00609000
BR R5 .. 00610000
CSWOK S R1,F8 AND POINT TO CCW 00611000
CL R1,IOBRCAW ERROR ON SAME CCW ?? 00612000
BE *+8 YES -- 00613000
MVI IOBRCNT,X'01' SET RETRY COUNT TO ONE 00614000
CLI RDEVTYPC,CLASURI INPUT DEVICE ?? 00615000
BCR 8,R5 YES - CAW IS CORRECT 00616000
CLI RDEVTYPE,TYP2520P STAND ALONE 2520 PUNCH ?? 00617000
BCR 8,R5 YES CAW IS CORRECT FOR 2520 @VA05776 00618000
CLI RDEVTYPE,TYP2540P IS IT 2540 PUNCH ?? 00619000
BCR 7,R5 NO -- CAW IS CORRECT 00620000
TM IOERDATA,EQCHK WAS IT EQUIPMENT CHECK ON PUNCH? 00621000
BCR 8,R5 NO -- CAW IS CORRECT 00622000
* IF ERROR IS ON SAME CCW RESTART WITH THAT CCW 00623000
CL R1,IOBRCAW IS ERROR ON SAME CCW ? 00624000
BCR 8,R5 YES - CAW IS CORRECT 00625000
* HERE ON EQUIPMENT CHECK ON WRITE TO PUNCH -- EQUIPMENT CHECK 00626000
* IS FOR PREVIOUS CARD PUNCHED -- MUST BACK UP AND REPUNCH 00627000
SPACE 00628000
TM RDEVFLAG,RDEVACNT PUNCHING ACCOUNTING CARDS ?? 00629000
BZ TSTSEP NO TEST FOR SEPARATOR CARD 00630000
L R1,ACNTBACK-ACNTBLOK(R1) GET ADDRESS OF PREVIOUS CCW 00631000
LTR R1,R1 BACK CHAIN ADDRESS ZEROES ?? 00632000
BNZ *+8 NO -- GOOD RESTART ADDRESS 00633000
L R1,IOBCAW RESTART WITH IOB CAW 00634000
BR R5 RETURN TO CALLER 00635000
SPACE 00636000
TSTSEP CLC IOBMISC2(4),=C'SEP ' PUNCHING SEPARATOR CARDS 00637000
BNE NORMERR NO -- NORMAL ERROR 00638000
S R1,F8 BACK UP TO PREVIOUS CCW 00639000
CL R1,IOBCAW ADDRESS BELOW IOB CAW ?? 00640000
BNL *+8 NO -- GOOD RESTART ADDRESS 00641000
L R1,IOBCAW YES - RESTART WITH IOBCAW 00642000
BR R5 RETURN TO CALLER 00643000
SPACE 00644000
NORMERR L R1,8(R1) PICK UP TIC ADDRESS 00645000
S R1,F4 BACK UP FOUR TO BACK POINTER 00646000
LA R1,0(R1) CLEAR TIC OP-CODE 00647000
L R1,0(R1) ADDRESS OF -2 BUFFER CCW 00648000
LTR R1,R1 VALID ADDRESS ?? 00649000
BZ FATAL NO - CAN'T RESTART 00650000
SPACE 2 00651000
UPDTCSW EQU * HERE TO UPDATE IOERCSW ON CONDITION CODE 1 00652000
TM IOBSTAT,IOBCC1 STATUS STORED ON SIO ?? 00653000
BCR 8,R5 NO -- FULL CSW PRESENT 00654000
UPDTCSW1 CLC IOERCSW+1(3),ZEROES CCW ADDRESS PRESENT IN CSW ?? 00655000
BCR 7,R5 YES -- 00656000
L R15,IOBCAW GET CAW 00657000
TM IOBFLAG,IOBRSTRT WAS THIS A RESTART ?? 00658000
BZ *+8 NO -- USE IOBCAW 00659000
L R15,IOBRCAW RESTART - USE IOBRCAW 00660000
LTR R15,R15 ADDRESS PRESENT ? 00661000
BCR 8,R5 NO - RETURN TO CALLER 00662000
AL R15,F8 UPDATE TO CCW + 8 00663000
STCM R15,B'0111',IOERCSW+1 FILL IN CSW FOR CONDITION 1 00664000
BR R5 RETURN TO CALLER 00665000
SPACE 2 00666000
SPACE 3 00667000
MSGERR EQU * HERE TO NOTIFY OPERATOR OF IO ERROR OR ACTION 00668000
NI IOERIND3,X'FF'-(IOERIGN+IOERETRY) RESET FLAGS 00669000
* 00670000
* MATCH MESSAGE NUMBER TO ERROR 00671000
* 00672000
MVI IOERNUM,21 NO DEVICE MESSAGE 00673000
TM IOBSTAT,IOBCC3 CONDITION CODE 3 00674000
BO IDFOUND YES -- 00675000
MVI IOERNUM,20 CHANNEL ERROR MESSAGE 00676000
TM IOBCSW+5,CDC+CCC+IFCC+CHC+PRGC+PRTC+PCI CHANNEL ERRORS ? 00677000
BNZ IDFOUND YES -- 00678000
SR R1,R1 CLEAR REG 00679000
MVI IOERNUM,3 EQUIPMENT CHECK MESSAGE 00680000
ICM R1,B'0001',IOERDATA FIRST SENSE BYTE 00681000
BZ IDFOUND FORCE CHANNEL CHECK MESSAGE 00682000
IC R14,RDEVTYPE DEVICE TYPE 00683000
LA R15,MSGTABLE-3 ADDRESS OF MESSAGE TABLE 00684000
IDLOOP A R15,F3 POINT TO NEXT ENTRY 00685000
EX R14,TMTYPE CORRECT DEVICE TYPE ?? 00686000
BNO IDLOOP NO -- 00687000
EX R1,TMERR ERROR MATCH ?? 00688000
BZ IDLOOP NO -- 00689000
MVC IOERNUM(1),2(R15) MOVE IN MSG ID 00690000
IDFOUND ICM R0,B'1110',ID+3 INSERT MODULE ID 00691000
CLI IOERNUM,1 INTERVENTION REQ MSG ? @VA00701 00692000
BE *+8 YES - SHORT OR LONG MSG FORMAT @VA00701 00693000
NI IOERFLG1,X'FF'-IOERPEND FORCE LONG MSG FORMAT @VA00701 00694000
CALL DMKMSWR,AFFINITY @V4075A0 00695100
BR R5 00696000
SPACE 3 00697000
ERR35XX EQU * HERE FOR 3505 AND 3525 ERROR RECOVERY 00698000
TM IOERDATA,1 PERMANENT ERROR ?? 00699000
BO FATAL1 YES -- 00700000
SPACE 00701000
SENSE1 TM IOERDATA+1,X'80' PERMANENT ERROR ?? 00702000
BO FATAL1 YES -- FATAL ERROR 00703000
TM IOERDATA+1,X'10' RETRY AFTER INTERVENTION REQ ?? 00704000
BZ RETRY1 NO -- RETRY ONCE 00705000
TM IOERDATA,EQCHK EQUIPMENT CHECK ? 00706000
BO DELAY2 YES -- 00707000
TM IOERDATA,INTREQ INTERVENTION REQUIRED ?? 00708000
BO DELAY YES - 00709000
B DELAY2 -- 00710000
SPACE 2 00711000
ERR3211 EQU * HERE TO GET 3211 OR 3203 PRINTER ERROR @V386298 00712000
* INFORMATION FOR ERROR RECORDING 00713000
SPACE 00714000
LA R5,GETDATA SET UP RETURN ADDRESS 00715000
CLI IOEREXT+1,XOBREXT OBR3211 BLOK PRESENT ?? 00716000
BCR 8,R5 YES -- 00717000
XC SAVEWRK1(4),SAVEWRK1 CLEAR SAVEWRK1 AREA 00718000
TM IOERDATA,DATACHK DATA CHECK ERROR ?? 00719000
BZ TEST1 NO -- 00720000
* 00721000
* PROCESS ROUTINES RT1, RT2, RT3 AND RT5 FOR UCSB DATA 00722000
* 00723000
MVI SAVEWRK1,XOBRRT1+XOBRRT2+XOBRRT3+XOBRRT5 00724000
TM IOERDATA+1,X'10' LINE PLACEMENT ERROR ?? FCB 00725000
BCR 8,R5 NO -- ALL SET UP FOR UCSB ERROR 00726000
MVI SAVEWRK1,XOBRRT6 DO ROUTINE RT6 FOR FCB ERROR 00727000
BR R5 GO GET ERROR DATA 00728000
SPACE 00729000
TEST1 TM IOERDATA,X'22' LOAD CHECK ? BUS CHECK ? 00730000
BZ TEST2 NO -- 00731000
L R6,IOERCSW LOCATE CCW OP-CODE 00732000
LA R6,0(R6) .. 00733000
SL R6,F8 .. 00734000
BC 6,TEST2 NO ADDRESS CHECK NEXT 00735000
MVI SAVEWRK1,XOBRRT6 ROUTINE FOR FCB DATA 00736000
CLI 0(R6),X'63' LOAD FCB OP-CODE ?? 00737000
BCR 8,R5 YES -- 00738000
MVI SAVEWRK1,XOBRRT5 ROUTINE FOR UCSB DATA 00739000
CLI 0(R6),X'FB' LOAD UCSB OP-CODE 00740000
BCR 8,R5 YES - 00741000
TM IOERDATA+3,X'A0' FCB OR UCSB PARITY CHECK ? 00742000
BNZ TEST3 YES -- 00743000
MVI SAVEWRK1,XOBRRT1+XOBRRT2+XOBRRT3 ROUTINE 1 2 3 00744000
BR R5 .. 00745000
SPACE 00746000
TEST2 TM IOERDATA+1,X'02' MECHANICAL MOTION ERROR ?? 00747000
BZ TEST3 NO -- 00748000
* 00749000
* SET UP FOR ROUTINES RT1, RT2, RT3, RT4, AND RT5 00750000
* 00751000
MVI SAVEWRK1,XOBRRT1+XOBRRT2+XOBRRT3+XOBRRT4+XOBRRT5 00752000
BR R5 GET ERROR DATA 00753000
SPACE 00754000
TEST3 MVI SAVEWRK1,XOBRRT5 ROUTINE 5 00755000
TM IOERDATA+3,X'80' UCSB PARITY ??? 00756000
BCR 1,R5 YES -- GET ERROR DATA 00757000
MVI SAVEWRK1,XOBRRT6 ROUTINE 6 00758000
TM IOERDATA+3,X'20' FCB PARITY ?? 00759000
BCR 1,R5 YES -- GET FCB DATA 00760000
* ROUTINES 1, 2, AND 3. 00761000
MVI SAVEWRK1,XOBRRT1+XOBRRT2+XOBRRT3 00762000
TM IOERDATA+3,X'58' PLB PARITY ? COIL PROTECT ? 00763000
* HAMMER FILE CHECK ? 00764000
BCR 7,R5 YES -- 00765000
TM IOERDATA,X'04' BUFFER PARITY CHECK ?? 00766000
BZ TEST3211 NO -- DO NORMAL RECORDING 00767000
MVI SAVEWRK1,XOBRRT6 ROUTINE FOR FCB DATA 00768000
TM IOERDATA+1,X'10' PRINT LINE PLACEMENT ?? 00769000
BCR 1,R5 YES -- GET FCB DATA 00770000
MVI SAVEWRK1,XOBRRT5 ROUTINE FOR UCSB DATA 00771000
SPACE 2 00772000
GETDATA EQU * HERE TO SET CCW TO GET ERROR DATA FROM PRINTER 00773000
SPACE 00774000
OI IOERFLG1,IOERXERP INDICATE ERP GETTING OBR DATA 00775000
CLI IOEREXT+1,XOBREXT XOBR3211 BLOK PRESENT ?? 00776000
BE RT1 YES -- CONTINUAL 00777000
LA R0,XOBRSIZE SIZE OF XOBR3211 BLOK 00778000
CALL DMKFREE GET STORAGE 00779000
LA R0,XOBREXT SIZE OF XOBR3211 BLOK 00780000
STH R0,IOEREXT SAVE LENGTH 00781000
LR R9,R1 SAVE ADDRESS 00782000
LR R0,R9 CLEAR XOBR3211 00783000
LA R1,XOBRSIZE*8 .. 00784000
SR R14,R14 .. 00785000
SR R15,15 .. 00786000
MVCL R0,R14 CLEAR AREA 00787000
SPACE 00788000
LR R1,R7 OLD IOERBLOK ADDRESS 00789000
LR R7,R9 ADDRESS OF NEW IOERBLOK EXT 00790000
MVC 0(IOERSIZE*8,R7),0(R1) COPY IOERBLOK 00791000
ST R7,RDEVIOER SAVE NEW IOERBLOK ADDRESS 00792000
LA R0,IOERSIZE SIZE OF NORMAL IOERBLOK 00793000
CALL DMKFRET FRET OLD BLOCK 00794000
SPACE 00795000
MVC XOBRSTAT(1),SAVEWRK1 SAVE ERROR ROUTINE STATUS 00796000
MVC XOBRMIS2(4),IOBRCAW SAVE RESTART CAW 00797000
MVC XOBRMIS1(2),IOBFLAG SAVE IOBFLAG AND STAT 00798000
LA R9,4 NUMBER OF CCWS 00799000
LA R14,CKRDCCW ADDRESS OF FIRST CCW 00800000
LA R15,XOBRCCW1 ADDRESS OF AREA IN IOERBLOK EXT 00801000
GETCCW LM R5,R6,0(R14) GET CCW 00802000
ALR R5,R7 UPDATE DATA ADDRESS 00803000
STM R5,R6,0(R15) STORE CCW IN XOBRCCW AREA 00804000
A R14,F8 UPDATE FROM AND TO ADDRESS 00805000
A R15,F8 .. 00806000
BCT R9,GETCCW DO FOUR CCWS 00807000
SPACE 2 00808000
RT1 EQU * HERE TO READ CHECK PRINT LINE BUFFER INFORMATION 00809000
ICM R9,B'1111',IOBIOER ERROR BLOK PRESENT ?? 00810000
BZ RT1A NO -- 00811000
MVC IOERPNT-IOERBLOK(4,R9),IOERPNT CHAIN NEW IOERBLOK 00812000
ST R9,IOERPNT 2ND IN CHAIN 00813000
SR R5,R5 AND CLEAR 00814000
ST R5,IOBIOER IOB POINTER TO ERROR BLOK 00815000
XR R7,R9 UPDATE IOERCSW 00816000
XR R9,R7 .. 00817000
XR R7,R9 .. 00818000
BAL R5,UPDTCSW1 UPDATE IOERCSW NOT CC=1 00819000
LR R7,R9 RESTORE ADDRESS OF IOERBLOK 00820000
RT1A TM XOBRSTAT,XOBRRT1 THIS ROUTINE SCHEDULED ?? 00821000
BZ RT2 NO -- 00822000
NI XOBRSTAT,X'FF'-XOBRRT1 RESET ROUTINE FLAG 00823000
LA R1,XOBRCCW1 ADDRESS OF CHECK READ CCW 00824000
B ERROBR AND EXIT TO IOS 00825000
SPACE 00826000
RT2 EQU * HERE TO READ PRINT LINE BUFFER DATA 00827000
TM XOBRSTAT,XOBRRT2 THIS ROUTINE SCHEDULED ? 00828000
BZ RT3 NO - 00829000
LA R1,XOBRCCW2 ADDRESS OF PLB READ CCW 00830000
NI XOBRSTAT,X'FF'-XOBRRT2 RESET ROUTINE FLAG 00831000
OI XOBRFLAG,XOBRT3 INDICATE BUFFER TYPE 3 INFORMATION 00832000
B ERROBR AND EXIT TO IOS 00833000
SPACE 00834000
RT3 EQU * HERE TO LOCATE THE FIRST CHARACTER IN ERROR 00835000
TM XOBRSTAT,XOBRRT3 THIS ROUTINE SCHEDULED ? 00836000
BZ RT5 NO -- 00837000
LA R5,XOBR512 ADDRESS OF PRINT LINE BUFFER DATA 00838000
LA R6,XOBR150 ADDRESS OF CHECK PLB DATA 00839000
LA R0,1 CONSTANT OF 1 00840000
LA R1,150 LENGTH OF BUFFER DATA 00841000
CLI RDEVTYPE,TYP3203 IS IT A 3203 PRINTER ?? @V386298 00841200
BNE CHARERR NO--CHECK 3211 PLB ERRORS @V386298 00841400
LA R1,132 3203 PLB LENGTH @V386298 00841600
CHARERR EQU * @V386298 00841800
LA R14,10 NUMBER OF ERROR CHARACTER NEEDED 00842000
LA R15,XOBR010 AREA TO PUT ERROR CHARACTERS 00843000
RT3LP TM XOBRSTAT,XOBRRT4 ROUTINE 4 SCHEDULED ?? 00844000
BO RT4A YES -- 00845000
TM 0(R6),X'02' PRINT ERROR CHECK FOR THIS POSITION? 00846000
BO RT3AA YES -- RECORD IT 00847000
B RT3A CHECK NEXT 00848000
RT4A EQU * @V386298 00848250
CLI RDEVTYPE,TYP3203 IS IT A 3203 PRINTER ?? @V386298 00848500
BNE RT4A3211 NO--CHECK 3211 PLB ERRORS @V386298 00848750
TM 0(R6),PLB3203 CHECK 3203 PLB FOR ERRORS @V3M4036 00849000
BO RT3A YES--DO NOT RECORD @V386298 00849250
B RT3AA NO--MOVE ERROR CHAR. @V386298 00849500
RT4A3211 TM 0(R6),X'04' CHECK 3211 PLB FOR ERRORS @V386298 00849750
BO RT3A YES - DO NOT RECORD 00850000
RT3AA MVC 0(1,R15),0(R5) MOVE ERROR CHARACTER TO XOBR010 00851000
AR R15,R0 ADD ONE TO XOBR010 ADDRESS REG 00852000
BCT R14,*+8 DO ONLY 10 CHARACTERS 00853000
B RT3B ALL DONE - 00854000
SPACE 00855000
RT3A BCT R1,*+8 END OF PLB DATA (150/132)?? @V386298 00856000
B RT3B YES -- 00857000
AR R6,R0 UPDATE PRINT LINE DATA ADDRESS 00858000
AR R5,R0 UPDATE CHECK DATA ADDRESS 00859000
B RT3LP AND CONTINUAL 00860000
SPACE 00861000
RT3B NI XOBRSTAT,X'FF'-(XOBRRT3+XOBRRT4) RESET FLAGS 00862000
XC XOBR512(150),XOBR512 CLEAR AREA FOR UCSB DATA 00863000
SPACE 00864000
RT5 EQU * HERE TO READ UCSB DATA 00865000
TM XOBRSTAT,XOBRRT5 THIS ROUTINE SCHEDULED ? 00866000
BZ RT6 NO - 00867000
NI XOBRSTAT,X'FF'-XOBRRT5 RESET ROUTINE 5 FLAG 00868000
LA R1,XOBRCCW3 ADDRESS OF READ UCSB CCW 00869000
OI XOBRFLAG,XOBRT1 INDICATE BUFFER TYPE 1 INFORMATION 00870000
B ERROBR AND EXIT TO IOS 00871000
SPACE 00872000
RT6 EQU * HERE TO READ FCB INFORMATION 00873000
TM XOBRSTAT,XOBRRT6 THIS ROUTINE SCHEDULED 00874000
BZ ENDOBR NO -- 00875000
NI XOBRSTAT,X'FF'-XOBRRT6 RESET FLAG 00876000
LA R1,XOBRCCW4 ADDRESS OF READ FCB CCW 00877000
OI XOBRFLAG,XOBRT2 INDICATE BUFFER TYPE 2 INFORMATION 00878000
SPACE 00879000
ERROBR ST R1,IOBRCAW SET RESTART CCW ADDRESS 00880000
OI IOBFLAG,IOBRSTRT+IOBERP SET RESTART FLAG AND ERROR 00881000
* ROUTINE IN CONTROL 00882000
B EREXIT EXIT TO IOS 00883000
SPACE 00884000
ENDOBR EQU * HERE IF ALL DONE GETTING OBR DATA 00885000
NI IOERFLG1,X'FF'-IOERXERP RESET OBR FLAG 00886000
MVC IOBRCAW(4),XOBRMIS2 RESTORE RESTART CAW 00887000
MVC IOBFLAG(2),XOBRMIS1 RESTORE FLAG AND STAT 00888000
SPACE 00889000
TEST3211 EQU * HERE FOR 3211/3203 PRINTER ERROR RECOVERY 00890000
TM IOERDATA,EQCHK EQUIPMENT CHECK ?? 00891000
BZ BUS32 NO -- 00892000
SPACE 00893000
TM IOERDATA+1,X'80' COMMAND RETRY ?? 00894000
BO RETRY1 YES - RETRY ONCE 00895000
SPACE 00896000
TM IOERDATA+1,X'70' BYTE 1 BITS 1 2 3 00897000
BNZ NXTDELAY YES -- WAIT FOR DEVICE END 00898000
TM IOERDATA+1,X'02' BYTE 1 - BIT 6 MECHANICAL MOTION 00899000
BO FATAL YES - FATAL ERROR 00900000
B DELAY2 WAIT FOR DEVICE END 00901000
SPACE 00902000
BUS32 TM IOERDATA,BUSOUT BUSOUT CHECK ?? 00903000
BO RETRY1 YES -- RETRY ONCE 00904000
TM IOERDATA,DATACHK DATA CHECK ERROR ??? 00905000
BO NXTDELAY YES -- WAIT FOR DEVICE END 00906000
TM IOERDATA,X'04' BUFFER PARITY CHECK ?? 00907000
BO FATAL YES -- 00908000
TM IOERDATA,CMDREJ COMMAND REJECT ?? 00909000
BO FATAL1 YES -- FATAL ERROR 00910000
SPACE 00911000
TM IOERDATA,X'02' LOAD CHECK ?? 00912000
BO RETRY1 YES -- RETRY ONCE 00913000
TM IOERDATA,X'40' INTERVENTION REQUIRED ?? 00914000
BO DELAY YES -- 00915000
TM IOERDATA+1,4 COMMAND SUPPRESSED ??? 00916000
BO RETRY1 YES - RETRY ONCE 00917000
TM IOERDATA,X'01' CHANNEL 9 ?? 00918000
BO IGNORE YES, IGNORE, RESTART WITH NEXT 00918050
B RETRY1 ... 00918090
SPACE 3 00918130
ERR3800 EQU * HERE FOR 3800 PRINTER ERROR RECOVERY @V60B9BA 00918170
MVI SAVEWRK1,X'00' RESET LOCAL 3800 FLAG BYTE @VA09266 00918200
TM IOERDATA,EQCHK EQUIPMENT CHECK ? @V60B9BA 00918250
BZ ER3800B XFER IF NOT @V60B9BA 00918290
TM IOERDATA+1,X'20' ERROR LOG FULL ? @V60B9BA 00918330
BZ ER3800A1 XFER IF NOT @V60B9BA 00918370
ST R10,SAVEWRK2 SAVE THE CURRENT IOBLOK @V60B9BA 00918410
LA R0,IOBSIZE GET DUMMY IOB @V60B9BA 00918450
CALL DMKFREE GET THE STORAGE @V60B9BA 00918490
XC 0(IOBSIZE*8,R1),0(R1) CLEAR THE DUMMY IOB @V60B9BA 00918530
LR R10,R1 NEED THE ADDRESSIBILITY @V60B9BA 00918570
XC RDEVIOER,RDEVIOER CLEAR IOERBLOK @V60B9BA 00918610
XC RDEVAIOB,RDEVAIOB CLEAR ACTIVE IO BLOCK @V60B9BA 00918650
NI RDEVSTAT,X'FF'-RDEVBUSY RESET DEVICE BUSY @V60B9BA 00918690
CALL DMKRSESD DO & RECORD SENSE ERROR LOG @V60B9BA 00918730
CALL DMKFRET RETURN STORAGE FOR DUM IOB @V60B9BA 00918770
L R10,SAVEWRK2 RESTORE ORIGINAL IOBLOK @V60B9BA 00918810
ST R7,RDEVIOER RESTORE ORIG IOERBLOK @V60B9BA 00918850
ST R10,RDEVAIOB RESTORE ACTIVE IOBLOK @V60B9BA 00918890
OI RDEVSTAT,RDEVBUSY SET DEVICE BUSY @V60B9BA 00918930
B RETRY1 RETRY THE CCW ONCE @V60B9BA 00918970
SPACE 00919010
ER3800A1 TM IOERDATA+1,X'10' CANCEL KEY ? @V60B9BA 00919050
BO REQUEUE REQUEUE THE FILE @VA11761 00919100
SPACE 00919130
* IT MUST BE A HARDWARE OR PERMANENT ERROR 00919170
SPACE 00919210
TM IOERDATA+3,X'08' SYSTEM RESTART REQUIRED @VA13713 00919260
BO REQUEUE XFER IF SO @V60B9BA 00919290
SPACE 00919330
DELAY38A TM IOERDATA+1,X'10' CANCEL KEY? @VA11761 00919340
BO FATAL1 @VA11761 00919345
DELAY38 LH R1,IOBRADD GET PRINTER ADDRESS @V60B9BA 00919370
OI SAVEWRK1,X'80' 3800 MSG HAS BEEN PRINTED @VA09266 00919385
CALL DMKCVTBH CONVERT TO PRINTABLE HEX @V60B9BA 00919410
STCM R1,B'0111',SAVEWRK2 SAVE IT IN DATA AREA @V60B9BA 00919450
MVI SAVEWRK2+3,X'00' DELIMITER FOR DMKERMSG @V60B9BA 00919490
SR R1,R1 SET UP FOR STATUS BYTE @V60B9BA 00919530
IC R1,IOERDATA+4 STATUS CODE @V60B9BA 00919570
CALL DMKCVTBH CONVERT TO PRINTABLE HEX @V60B9BA 00919610
STCM R1,B'0011',SAVEWRK3 PUT IT IN DATA AREA @V60B9BA 00919650
LA R0,6 LENGTH OF DATA @V60B9BA 00919690
ICM R0,B'1110',ID+3 MODULE ID @V60B9BA 00919730
LA R1,SAVEWRK2 ADDRESS OF THE DATA @V60B9BA 00919770
LA R2,242 BINARY MESSAGE NUMBER @V60B9BA 00919810
ICM R2,B'1100',=X'B0C9' RETURN, OPERATOR, ALARM @V60B9BA 00919850
* AND INFORMATION MESSAGE 00919890
CALL DMKERMSG GO TYPE THE MESSAGE @V60B9BA 00919930
TM IOERDATA,EQCHK EQUIPMENT CHECK ? @V60B9BA 00919970
BO DELAY2 RECORD ERROR IF SO @V60B9BA 00920010
TM IOERDATA+3,X'08' SYSTEM RESTART REQUIRED @VA13713 00920060
BO DELAY2 RECORD ERROR IF SO @V60B9BA 00920090
B DELAY WAIT FOR DE - DON'T RECORD @V60B9BA 00920130
SPACE 00920170
ER3800B TM IOERDATA,CMDREJ COMMAND REJECT ? @V60B9BA 00920210
BO FATAL1 YES - FATAL ERROR @V60B9BA 00920250
TM IOERDATA,BUSOUT BUS OUT CHECK ? @V60B9BA 00920290
BO RETRY1 RETRY OPERATION ONCE @V60B9BA 00920330
TM IOERDATA,DATACHK DATA CHECK @V60B9BA 00920370
BO NXTDELAY YES - GET NEXT CCW @V60B9BA 00920410
TM IOERDATA,INTREQ INTERVENTION REQUIRED ? @V60B9BA 00920450
BZ ER3800C XFER IF NOT @V60B9BA 00920490
TM IOERDATA+3,X'08' SYSTEM RESTART REQUIRED ? @V60B9BA 00920530
BO REQUEUE REUEUE DELAY PURGE IF SO @V60B9BA 00920570
B DELAY38 SEND MESSAGE OTHERWISE @V60B9BA 00920610
SPACE 00920650
ER3800C TM IOERDATA,X'01' CHANNEL 9 ? @V60B9BA 00920690
BO IGNORE YES-IGNORE & RSTRT NEXT CCW @V60B9BA 00920730
TM IOERDATA,X'02' LOAD CHECK ? @V60B9BA 00920770
BZ FATAL FATAL ERROR IF NOT @V60B9BA 00920810
SPACE 00920850
* LOAD CHECK - SEND INFO BACK TO DMKTCS 00920890
SPACE 00920930
CLC =C'TCS ',IOBMISC2 3800 SETUP IN CONTROL ? @V60B9BA 00920970
BNE FATAL1 FATAL ERROR IF NOT @V60B9BA 00921010
MVC IOBMISC2(2),=C'LD' TELL TCS IT'S A LOAD CHECK @V60B9BA 00921050
MVC IOBMISC2+2(2),IOERDATA+1 TELL HIM WHAT KIND @V60B9BA 00921090
B EREXIT1 RETURN WITH NO FATAL ERROR @V60B9BA 00921130
* AND NO RESTART @V60B9BA 00921170
SPACE 00921210
*. 00921250
* THE SYSTEM RESTART BIT IS ON. THE PAGE BUFFER MUST HAVE 00921290
* BEEN DESTROYED. WE MUST TAKE ALL THE FILES THAT WERE ON 00921330
* THE DELAY PURGE QUEUE AND REQUEUE THEM ONTO THE PRINTER 00921370
* OR PUNCH CHAIN. WE SEND MESSAGES DMKRSE255I AND DMKRSE252I 00921410
* INFORMING THE OPERATOR OF WHAT JUST OCCURRED. 00921450
*. 00921490
SPACE 00921530
REQUEUE LH R1,IOBRADD PRINTER ADDRESS FOR MESSAGE @V60B9BA 00921570
CALL DMKCVTBH CONVERT TO PRINTABLE HEX @V60B9BA 00921610
STCM R1,B'0111',SAVEWRK2 STORE PRINTER ADDRESS @V60B9BA 00921650
MVI SAVEWRK2+3,X'00' DELIMITER FOR DMKERMSG @V60B9BA 00921690
TM IOERDATA+1,X'10' CANCEL KEY? @VA11761 00921700
BO REQLOOP @VA11761 00921705
LH R1,IOERDATA+20 PAGE BACKUP COUNT @V60B9BA 00921730
CALL DMKCVTBD CONVERT TO DECIMAL @V60B9BA 00921770
ST R1,SAVEWRK3 SAVE IT FOR DMKERMSG @V60B9BA 00921810
LA R0,8 LENGTH OF DATA @V60B9BA 00921850
ICM R0,B'1110',ID+3 MODULE ID @V60B9BA 00921890
LA R1,SAVEWRK2 ADDR OF DATA AREA @V60B9BA 00921930
LA R2,255 MESSAGE NUMBER @VMI0027 00921970
ICM R2,B'1100',=X'B0C9' RTN, OP, ALARM, INFO MSG @V60B9BA 00922010
CALL DMKERMSG SEND THE MESSAGE @V60B9BA 00922050
SPACE 00922090
*. 00922130
* WE NOW TAKE EACH SPOOL FILE THAT IS ON THE DELAYED 00922170
* PURGE QUEUE AND REQUEUE IT ON ITS ORIGINAL 00922210
* QUEUE (PRINTER). IN ADDITION, EACH SUCH FILE 00922250
* IS PLACED IN 'SYSTEM HOLD'. FINALLY, THE OPERATOR IS 00922290
* SENT DMKRSE252I FOR EACH FILE INFORMING HIM OF WHAT WAS DONE. 00922330
*. 00922370
SPACE 00922410
REQLOOP L R4,RDEVDELP FIRST FILE ON DEL PUR Q @V60B9BA 00922450
LTR R4,R4 ANY MORE LEFT ? @V60B9BA 00922490
BZ DELAY38A @VA11761 00922535
USING SFBLOK,R4 TEMPORARY ADDRESSIBILITY @V60B9BA 00922570
MVC RDEVDELP,SFBPNT TAKE IT OFF DEL PURGE QUEUE @V60B9BA 00922610
L R1,=A(DMKRSPPR) PRINTER CHAIN START @V60B9BA 00922650
OI SFBFLAG,SFBRECER+SFBSHOLD INDICATE ALLOCATION @V60B9BA 00922690
* INCOMPLETE AND SYSTEM HOLD @V60B9BA 00922730
L R2,0(,R1) SAVE PTR TO FIRST ON CHAIN @V60B9BA 00922770
ST R4,0(,R1) RECHAIN DEL PURGE FILE @V60B9BA 00922810
ST R2,SFBPNT CHAIN OTHER FILE BEHIND IT @V60B9BA 00922850
SPACE 00922890
* TELL OPERATOR ABOUT IT. PRINTER ADDR IS IN SAVEWRK2 00922930
SPACE 00922970
LH R1,SFBFILID GET SPOOL FILE NUMBER @V60B9BA 00923010
CALL DMKCVTBD CONVERT TO EBCDIC DECIMAL @V60B9BA 00923050
ST R1,SAVEWRK3 PUT IT IN DATA AREA @V60B9BA 00923090
LA R0,8 LENGTH OF DATA AREA @V60B9BA 00923130
ICM R0,B'1110',ID+3 MODULE ID @V60B9BA 00923170
LA R1,SAVEWRK2 ADDRESS OF DATA AREA @V60B9BA 00923210
LA R2,252 MESSAGE NUMBER @V60B9BA 00923250
ICM R2,B'1100',=X'B0C9' RTN, OP, ALARM, INFO MSG @V60B9BA 00923290
CALL DMKERMSG TYPE THE MESSAGE @V60B9BA 00923330
B REQLOOP DO FOR NEXT FILE ON QUEUE @V60B9BA 00923370
DROP R4 NO LONGER NEEDED @V60B9BA 00923410
SPACE 3 00923450
CHANERR EQU * HERE FOR INTERFACE OR CHAN CON CK 00923490
SPACE 00923530
* R1 = ADDR OF FAILING CCW 00923570
* R2 = DEVICE ACTION TABLE ADDR 00923610
* R3 = TERMINATION CODE 00923650
* R4 = SEQUENCE CODE 00923690
* R15 = BRANCH INDEX OUT OF TERMINATION SEQUENCE ROUTINE 00928000
SPACE 00929000
TM IOBSTAT,IOBCC1 CONDITION CODE 1 ON SIO ? 00930000
BO RETRY1 YES -- RETRY ONCE 00931000
SR R1,R1 LOCATE FAILING CCW 00932000
ICM R1,B'0111',IOERCSW+1 CCW ADDRESS + 8 00933000
BZ FATAL CCW ADDRESS MISSING - FATAL 00934000
S R1,F8 POINT TO FAILING CCW 00935000
SPACE 00936000
SR R3,R3 CLEAR TERMINATION REG 00937000
SR R4,R4 CLEAR SEQUENCE REG 00938000
LA R2,SENSEALL ADDRESS OF SENSE ACTION TABLE 00939000
CLI 0(R1),X'04' FAILING CCW A SENSE COMMAND ? 00940000
BE TERMSEQ YES -- LOCATE ACTION CODE 00941000
SPACE 00942000
* POSSIBLE READER OP-CODES FOR SPOOLING - 02 42 00943000
CLI RDEVTYPE,TYP2501 2501 READER ? 00944000
BNE CH3505 NO -- 00945000
LA R2,RD2501 POINT TO READ ACTION TABLE 00946000
B TERMSEQ GO LOCATE ACTION CODE 00947000
SPACE 00948000
CH3505 CLI RDEVTYPE,TYP3505 3505 READER ? 3525 PUNCH ? 00949000
BNE CH2540 NO -- 00950000
LA R2,RD3505 POINT TO READ ACTION TABLE 00951000
TM RDEVTYPC,CLASURI 3505 READER ? 00952000
BO *+8 YES - 00953000
LA R2,WC3525 POINT TO PUNCH ACTION TABLE 00954000
B TERMSEQ GO LOCATE ACTION CODE 00955000
SPACE 00956000
CH2540 EQU * HERE FOR 2540 READER AND 2540 PUNCH 00957000
CLI RDEVTYPE,TYP2540R 2540 READER ? 2540 PUNCH ? 00958000
BNE CH1443 NO -- 00959000
LA R2,RD2540 POINT TO READ 2540 ACTION TABLE 00960000
B SEQONLY GO LOCATE ACTION CODE 00961000
SPACE 00962000
CH1443 CLC =C'LOADBUF',VMCOMND LOADBUF COMMAND INPROCESS ? 00963000
BE FATAL YES - CAN NOT RESTART 00964000
CLI RDEVTYPE,TYP1443 1443 PRINTER ? 00965000
BNE CH1403 NO - 00966000
LA R2,C1443 CONTROL ACTION TABLE 00967000
TM 0(R1),X'03' CONTROL OP CODE ? 00968000
BO SEQONLY YES -- LOCATE ACTION CODE 00969000
BZ FATAL NOT PRINT OR CONTROL 00970000
LA R2,PC1443 PRINT, PRINT AND CONTROL TABLE 00971000
B SEQONLY LOCATE ACTION CODE 00972000
SPACE 00973000
CH1403 CLI RDEVTYPE,TYP1403 1403 PRINTER ? 00974000
BNE CH3211 NO - 00975000
LA R2,P1403 PRINT ACTION TABLE 00976000
CLI 0(R1),X'01' PRINT OP-CODE ? 00977000
BE SEQONLY YES -- LOCATE ACTION CODE 00978000
LA R2,PC1403 PRINT, PRINT AND CONTROL TABLE 00979000
B SEQONLY LOCATE ACTION CODE 00980000
SPACE 00981000
CH3211 EQU * 00981700
TM RDEVTYPE,TYP3211 IS IT A 3203/3211 PRINTER?? @V386298 00982400
BNO CH3800 NO--CHECK 3800 @V60B9BA 00983100
LA R2,P3211 PRINT ACTION TABLE 00984000
CLI 0(R1),X'01' PRINT OP-CODE ? 00985000
BE SEQONLY YES -- LOCATE ACTION CODE 00986000
LA R2,C3211 CONTROL ACTION TABLE 00987000
TM 0(R1),X'03' CONTROL OP-CODE ? 00988000
BO SEQONLY YES - LOCATE ACTION CODE 00989000
LA R2,PC3211 PRINT AND CONTROL TABLE 00990000
B SEQONLY LOCATE ACTION CODE 00991000
SPACE 00992000
CH3800 CLI RDEVTYPE,TYP3800 IS IT 3800 PRINTER ? @V60B9BA 00992100
BNE CH2520 NO, TRY 2520 @V60B9BA 00992200
LA R2,L3800 SENSE CONTROL TABLE @V60B9BA 00992300
IC R4,0(R1) SEE IF ONE OF THE SENSE @V60B9BA 00992400
N R4,F15 .. OP CODES @V60B9BA 00992500
CLM R4,B'0001',=X'04' IS IT ? @V60B9BA 00992600
BE SEQONLY LOCATE ACTION CODE IF SO @V60B9BA 00992700
LA R2,PC3800 PRINT AND CONTROL TABLE @V60B9BA 00992800
B SEQONLY LOCATE ACTION CODE @V60B9BA 00992900
SPACE 00993000
CH2520 CLI RDEVTYPE,TYP2520P 2520 PUNCH ?? 00994000
BNE FATAL NO --UNKNOWN - FATAL ERROR 00995000
LA R2,WC2520 WRITE WITH CONTROL TABLE 00996000
SPACE 2 00997000
TERMSEQ EQU * HERE TO LOCATE CORRECT ACTION CODE 00998000
SPACE 00999000
* R1 = ADDRESS OF FAILING CCW 01000000
* R2 = ADDRESS OF ACTION TABLE 01001000
* R3 = USED FOR TERMINATION CODE 01002000
* R4 = USED FOR SEQUENCE CODE 01003000
* R15 = EXIT BRANCH INDEX CODE 01004000
* IOERECSW EQU IOERCSW 01005000
SPACE 01006000
IC R3,IOERECSW+3 GET TERMINATION CODE BITS 0 AND 1 01007000
SRL R3,6 SHIFT TERMINATION CODE TO BITS 6 - 7 01008000
SLL R3,3 TERMINATION CODE TIME TABLE 01009000
* ENTRY LENGTH (8) 01010000
AR R2,R3 POINT TO CORRECT TABLE ENTRY 01011000
SPACE 01012000
SEQONLY EQU * ENTRY HERE WHEN TERM CODES 00 01 10 01013000
* HAVE SAME SEQUENCE ACTION CODES 01014000
IC R4,IOERECSW+3 GET SEQUENCE CODE FROM ECSW 01015000
N R4,F7 SAVE ONLY SEQUENCE CODE (BITS 5,6,7) 01016000
SR R15,R15 CLEAR INDEX REG 01017000
IC R15,0(R2,R4) PICK UP ACTION INDEX CODE 01018000
B *+4(R15) BRANCH TO CORRECT ACTION FOR ERROR 01019000
B FATAL ACTION CODE 0 FATAL CHANNEL ERROR 01020000
B RETRY1 ACTION CODE 4 RETRY THE OPERATION 01021000
B IGNORECH ACTION CODE 8 IGNORE THE ERROR 01022000
B DELAY2 ACTION CODE 12 OPERATOR INTERVENTION 01023000
* REQUIRED 01024000
SPACE 01025000
IGNORECH TM 4(R1),CC COMMAND CHAINING ?? 01026000
BO IGNORE YES - RESTART WITH NEXT CCW 01027000
MVC IOBCSW+4(2),=AL1(CE+DE,0) FORCE GOOD CSW 01028000
B EREXIT1 RETURN TO DMKRSPEX VIA IOS 01029000
EJECT 01030000
*. 01030010
* 01030020
* ENTRY POINT - 01030030
* 01030040
* DMKRSESD - FORMAT HARDWARE ENVIRONMENTAL COUNTERS FOR A 3800 01030050
* 01030060
* OPERATION - 01030070
* 01030080
* CALLED FROM DMKCPS, DMKCCW AND DMKRSERR TO RECORD 01030090
* THE HARDWARE ENVIRONMENTAL DATA PRESENT IN THE 01030100
* 3800 INTERNAL ERROR LOG. 01030110
* ISSUE THE 'SENSE ERROR LOG' CCW AND IF NO ERRORS OCCUR, 01030120
* A CALL IS MADE TO DMKIOESD TO RECORD THE DATA FOR 01030130
* FIELD ENGINEERING USE. 01030140
* 01030150
*. 01030160
SPACE 01030170
DMKRSESD RELOC , @V60B9BA 01030180
LR R1,R11 CHARGE USER @V60B9BA 01030190
ST R1,IOBUSER ..... INTO IOBLOK @V60B9BA 01030200
LA R7,136/8 NO OF EXTRA WDS IN IOERBLOK @V60B9BA 01030210
LA R0,IOERSIZE+136/8 FOR A 3800 GET EXTRA SPACE @V60B9BA 01030220
CALL DMKFREE NOW GET EXTRA-SIZE IOERBLOK @V60B9BA 01030230
DROP R7 DROP IT TEMPORARILY @V60B9BA 01030240
USING IOERBLOK,R1 (VERY BRIEFLY) @V60B9BA 01030250
XC IOERBLOK(IOERSIZE*8),IOERBLOK CLEAR THE IT @V60B9BA 01030260
STH R7,IOEREXT STORE EXTRA SIZE OF BLOCK @V60B9BA 01030270
DROP R1 @V60B9BA 01030280
LR R7,R1 NOW NORMAL IOERBLOK ADDRESSABILIT@V60B9BA 01030290
USING IOERBLOK,R7 ... @V60B9BA 01030300
TM RDEVFTR,FTREXTSN DOES DEVICE HAVE BUFFERS ? @V60B9BA 01030490
BZ FRETIOER IF NOT, DO NOT ISSUE BUFFER UNLOA@V60B9BA 01030500
LM R0,R1,UNLD3800 GET THE RIGHT CCW TO UNLOAD BFR @V60B9BA 01030510
ALR R0,R7 POINT TO IOERDATA @V60B9BA 01030520
STM R0,R1,SAVEWRK4 SAVE THE CCW @V60B9BA 01030530
STH R1,IOERLEN SAVE SENSE LENGTH FOR ERROR RECOR@V60B9BA 01030540
MVC SAVEWRK6(8),LOADSNS DUMMY SENSE CCW @V60B9BA 01030550
LA R1,READBUF LOAD R1 W/ INTERRUPT RETURN ADDRE@V60B9BA 01030560
ST R1,IOBIRA STORE IT IN THE IOBLOK. @V60B9BA 01030570
LA R4,SAVEWRK4 BFR UNLOAD CCWS @V60B9BA 01030580
ST R4,IOBCAW SET CAW ADDR IN IOBLOK @V60B9BA 01030590
ST R13,IOBMISC SAVE R13 ACROSS I/O @V60B9BA 01030600
STM R7,R8,SAVEWRK2 SAVE PTR TO IOERBLOK AND RDEVBLOK@V60B9BA 01030610
CALL DMKIOSQR CALL IOS FOR BUFFER UNLOAD OPERAT@V60B9BA 01030620
GOTO DMKDSPCH WAIT FOR I/O TO COMPLETE. @V60B9BA 01030630
SPACE 01030640
READBUF DS 0H CONNECTOR @V60B9BA 01030650
USING *,R12 @V60B9BA 01030660
S R12,=A(READBUF-DMKRSE) NORMAL ADDRESSIBILITY @V60B9BA 01030670
USING DMKRSE,R12 @V60B9BA 01030680
L R13,IOBMISC RESTORE ADDRESS OF STD WORKAREA @V60B9BA 01030690
LM R7,R8,SAVEWRK2 RESTORE ADD OF IOERBLOK & RDEVBLO@V60B9BA 01030700
TM IOBSTAT,IOBFATAL+IOBCC3 WAS THERE AN ERROR COND@V60B9BA 01030710
BNZ FRETIOER IF YES, EXIT @V60B9BA 01030720
ST R7,IOBIOER STORE ADDRESS OF IOERBLOK FOR REC@V60B9BA 01030730
CALL DMKIOESD RECORD THIS RECORD. @V60B9BA 01030740
B CKIOB RELEASE ANY MOVE IOERBLOKS @V60B9BA 01030750
SPACE 01030760
FRETIOER LA R0,IOERSIZE SIZE OF 1 IOERBLOK @V60B9BA 01030770
AH R0,IOEREXT INCLUDE EXTRA SIZE (IF ANY) @V60B9BA 01030780
LR R1,R7 LOCATION OF IOERBLOK. @V60B9BA 01030790
CALL DMKFRET FRET THIS STORAGE @V60B9BA 01030800
SPACE 01030810
* THIS ROUTINE WILL CHECK FOR A SECOND IOERBLOK . IF ONE WAS 01030820
* OBTAINED STORAGE WILL BE GIVEN BACK TO THE SYSTEM. 01030830
* 01030840
CKIOB L R1,IOBIOER GET ADDR. OF 2'ND IOERBLOK @V60B9BA 01030850
LA R1,0(R1) CLEAR HI BYTE @V60B9BA 01030860
LTR R1,R1 WAS BLOCK REALY OBTAINED ? @V60B9BA 01030870
BZ NOTUSED BRANCH IF NO. @V60B9BA 01030880
TM IOERCSW+5-IOERBLOK(R1),IFCC+CCC+CDC IS CHANNEL @V60B9BA 01030890
* ERROR 01030900
* INDICATED ? 01030910
BZ CKEND2 NO, GO FRET IOERBLOK @V60B9BA 01030920
LR R3,R1 SAVE THE IOERBLOK POINTER @V60B9BA 01030930
L R1,IOERCCRA-IOERBLOK(R3) CHANNEL REC ADDR @V60B9BA 01030940
L R0,IOERCCRL-IOERBLOK(R3) CHANNEL REC LENGTH @V60B9BA 01030950
CALL DMKFRET RELEASE STORAGE @V60B9BA 01030960
LR R1,R3 GET IOERBLOK POINTER @V60B9BA 01030970
CKEND2 EQU * @V60B9BA 01030980
LA R0,IOERSIZE LOAD IOERBLOK SIZE. @V60B9BA 01030990
AH R0,IOEREXT-IOERBLOK(,R1) INCLUDE EXTRA SIZE (IF @V60B9BA 01031000
CALL DMKFRET @V60B9BA 01031010
NOTUSED MVC IOBIOER,ZEROES CLEAR ADDRESS IN IOBLOK IN CASE @V60B9BA 01031020
SPACE 01031030
RETNSHUT EXIT EXIT TO CALLER. @V60B9BA 01031040
SPACE 3 01031050
EJECT 01031060
TMTYPE TM 0(R15),0 EXCUTE TM 01032000
TMERR TM 1(R15),0 EXCUTE TM 01033000
CKRDCCW CCW X'06',XOBR150-IOERBLOK,SILI,150 CHECK READ CCW 01034000
PLBCCW CCW X'02',XOBR512-IOERBLOK,SILI,150 READ PLB 01035000
UCSBCCW CCW X'0A',XOBR512-IOERBLOK,SILI,512 READ UCSB DATA 01036000
FCBCCW CCW X'12',XOBR180-IOERBLOK,SILI,180 READ FCB DATA 01037000
SPACE 01037250
UNLD3800 CCW X'24',IOERDATA-IOERBLOK,CC+SILI,136 3800 UNLD @V60B9BA 01037500
LOADSNS CCW X'04',*-*,SILI+SKIP,1 DUMMY SENSE CCW @V60B9BA 01037750
SPACE 01038000
MSGTABLE DC X'FF1003' EQUIPMENT CHECK 01039000
DC X'FF0804' DATA CHECK 01040000
DC X'FF2002' BUS OUT CHECK 01041000
DC X'FF8000' COMMAND REJECT 01042000
DC X'FF4001' INTERVENTION REQUIRED 01043000
DC X'43041D' PARITY (3211 1403 3203) @V386298 01044000
DC X'420218' LOAD CHECK (3211 3203) @V386298 01045000
DC X'840219' FORMAT CHECK (35XX) 01046000
DC X'840108' PERMANENT ERROR (35XX) 01047000
DC X'810405' OVERRUN (2501) 01048000
DC X'FFFF03' ALL OTHERS EQUIPMENT CHECK 01049000
DS 0H 01050000
EJECT 01051000
* 01052000
* SEQUENCE CODE 000,001,010,011,100,101,110,111 01053000
* 01054000
SENSEALL DC AL1(0,4,4,4,4,4,0,0) TERM CODE 00 01055000
DC AL1(0,0,4,4,0,4,0,0) TERM CODE 01 01056000
DC AL1(0,4,4,4,4,4,0,0) TERM CODE 10 01057000
SPACE 01058000
RD2501 DC AL1(0,4,12,12,4,12,0,0) TERM CODE 00 01059000
DC AL1(0,0,12,12,0,12,0,0) TERM CODE 01 01060000
DC AL1(0,4,12,12,4,12,0,0) TERM CODE 10 01061000
SPACE 01062000
SPACE 01063000
RD3505 DC AL1(0,4,4,4,4,12,0,0) TERM CODE 00 01064000
DC AL1(0,0,4,4,0,04,0,0) TERM CODE 01 01065000
DC AL1(0,4,4,4,4,12,0,0) TERM CODE 10 01066000
SPACE 01067000
WC3525 DC AL1(0,4,4,4,4,0,0,0) TERM CODE 00 01068000
DC AL1(0,0,4,4,0,4,0,0) TERM CODE 01 01069000
DC AL1(0,4,4,4,4,0,0,0) TERM CODE 10 01070000
SPACE 01071000
C3211 EQU * TERM 00 01 10 01072000
C1443 EQU * TERM 00 01 10 01073000
PC1403 EQU * TERM 00 01 10 01074000
C1403 EQU * TERM 00 01 10 01075000
RD2540 EQU * TERM 00 01 10 01076000
WC2540 EQU * TERM 00 01 10 01077000
PLB3203 EQU X'10' MASK FOR 3203 PLB @V3M4036 01077150
SPACE 1 01077300
* ALL TERM CODES WHICH APPLY TO THE 3211 PRINTER ALSO 01077450
* APPLY TO THE 3203 PRINTER 01077600
SPACE 1 01077750
DC AL1(0,0,0,0,4,0,0,0) TERM CODE 00 01 10 01078000
SPACE 01079000
PC3800 EQU * TERM CODE 00 01 10 @V60B9BA 01080000
PC1443 EQU * TERM CODE 00 01 10 01080500
P1443 DC AL1(0,4,4,0,4,0,0,0) TERM CODE 00 01 10 01081000
SPACE 01082000
L3800 EQU * TERM CODE 00 01 10 @V60B9BA 01082500
P1403 DC AL1(0,4,4,4,4,4,0,0) TERM CODE 00 01 10 01083000
SPACE 01084000
P3211 DC AL1(0,4,4,4,4,4,0,0) TERM CODE 00 01 10 01085000
SPACE 01086000
PC3211 DC AL1(0,0,0,0,4,4,0,0) TERM CODE 00 01 10 01087000
SPACE 01088000
WC2520 DC AL1(0,4,12,12,4,12,0,0) TERM CODE 00 01089000
DC AL1(0,0,12,12,0,12,0,0) TERM CODE 01 01090000
DC AL1(0,4,04,04,0,04,0,0) TERM CODE 10 01091000
SPACE 3 01092000
PARMLEN EQU 2 NUM OF DBLWDS FOR 3800 PARM FIELD @V60B9BA 01092250
PARM3800 DC X'04040F0F0F0F0F0FFF' 3800 COUNTERS @V60B9BA 01092500
SPACE 2 01092750
LTORG 01093000
EJECT 01094000
PSA 01095000
COPY VMBLOK 01096000
COPY RBLOKS 01097000
COPY SAVE 01098000
COPY EQU 01099000
COPY DEVTYPES 01100000
COPY SPOOL @V60B9BA 01100500
COPY IOBLOKS 01101000
COPY IOER 01102000
COPY ACCOUNT 01103000
END 01104000